SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
Aula 01
TCE-ES (Auditor de Controle Externo -
Tecnologia da Informação) Infraestrutura
de TI - 2022 (Pós-Edital)
Autor:
Diego Carvalho, Raphael Henrique
Lacerda
05 de Outubro de 2022
12225328757 - Elton Barbosa
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
Índice
..............................................................................................................................................................................................
1) Programação - Python 3
..............................................................................................................................................................................................
2) Questões Comentadas - Programação - Python - Multibancas 50
..............................................................................................................................................................................................
3) Lista de Questões - Programação - Python - Multibancas 62
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
2
69
APRESENTAÇÃO
Seus lindos, vamos iniciar a nossa aula de Python. Eu sei que muitas pessoas ficam
preocupadíssimas achando que precisam aprender a programar para resolver questões de prova.
Galera, não é necessário... vocês vão ver que é totalmente possível responder questões de
programação sem nunca ter desenvolvido um software na vida. Fiquem calmos... venham comigo
que vocês vão adorar descobrir como funciona um programa de computador ;)
PROFESSORDIEGO CARVALHO - www.instagram.com/professordiegocarvalho
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
3
69
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
4
69
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
5
69
LÓGICA DE PROGRAMAÇÃO
Conceitos Básicos
INCIDÊNCIA EMPROVA: baixíssima
O Edital traz um tópico sobre Python, mas eu insiro dois pequenos tópicos no início da aula sobre
lógica de programação para que vocês entendam os fundamentos que norteiam o estudo de
qualquer linguagem de programação. Para alunos que já tiveram alguma experiência prévia com
programação ou que não encontram dificuldades no assunto, eu sugiro pular esses três
primeiros tópicos e irem diretamente para o assunto de Python.
Galera, vamos começar falando sobre Lógica de Programação! Em primeiro lugar, por que nós
chamamos de lógica? Porque nós vamos utilizar princípios lógicos para resolver geralmente, mas
não exclusivamente, problemas computacionais. Como assim, Diego? É necessário utilizar um
encadeamento de raciocínios coerentes para alcançar um determinado objetivo. Nós podemos
descrever esses raciocínios como uma sequência de instruções ou passos.
Professor, e o que seria uma instrução? É um conjunto de regras ou normas simples e bem
definidas para a realização ou emprego de algo, indicando ao computador uma ação ou função
elementar a ser executada. Galera, um computador não pensa, ele é burro – ele somente recebe
ordens e as executa! O programador de computador – sim – é o cara inteligente que dá as ordens.
Então, vejam só a linha de raciocínio...
Um computador é excelente para realizar cálculos e processamentos, mas ele não consegue pensar
sozinho. Já o programador é ótimo em pensar sozinho sobre como resolver problemas, mas ele não
tem capacidade de fazer bilhões de cálculos e processamentos. Logo, eles se juntam de forma que
o programador possa pensar na forma de resolver um problema e criar um conjunto de
instruções para que o computador apenas as execute.
Sabe qual é o nome dado a um conjunto de instruções? Algoritmo! Programadores são especialistas
em construir algoritmos. Formalmente podemos definir um algoritmo como um conjunto
predeterminado e bem definido de passos destinados à solução de um problema, com um número
finito de etapas. Professor, você pode dar um exemplo? Claro! O exemplo mais comum da
bibliografia é uma receita de bolo.
Qual é o problema que desejamos resolver? Nós queremos fazer um bolo! Observem que para
solucionar nosso problema – fazer um bolo –, é necessário seguir uma sequência de passos
finitos e predeterminados. Galera, no fim das contas um software é apenas a representação de um
algoritmo. Claro que é um algoritmo bastante complexo que exige um conjunto de recursos e
ferramentas computacionais, mas – no fim das contas – é apenas um algoritmo.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
6
69
Representações de Algoritmos
INCIDÊNCIA EMPROVA: baixíssima
Todos os programas de um computador ou dispositivos são representações de algoritmos! Inclusive
o Candy Crush no meu celular? Sim! O Uber, Waze e Spotify também? Eles também! Se você pudesse
ver como são internamente cada programa, você perceberia que todos são basicamente um
conjunto de instruções. Dito isso, vamos ver a seguir as maneiras possíveis de se representar um
algoritmo. Venham comigo...
Linguagem Natural
Também conhecida como Descrição Narrativa, trata-se da maneira como expressamos nosso
raciocínio e trocamos informações. Como é a expressão da cultura de uma sociedade,
desenvolvida através das gerações e em diferentes situações, raramente constitui um sistema de
regras rígidas e estruturadas que possa ser implementada numa máquina ou que possa ser
transcrita logicamente.
Além da linguagem falada, fazem parte da nossa comunicação gestos e posturas, que não podem
ser diretamente adaptados para compreensão de uma máquina. Ademais, toda a comunicação
eficiente pressupõe um conhecimento prévio comum entre os interlocutores, por exemplo: a
mesma língua, a mesma bagagem cultura, etc. Ao contrário dos seres humanos, as máquinas são
projetadas para executar tarefas bem determinadas a partir de determinadas instruções.
Um computador não é por si só uma máquina inteligente – no sentido de que não pode aprender
com a própria experiência para melhorar seu comportamento futuro. Ao contrário, um computador
é somente capaz de realizar estritamente as tarefas que lhe forem delegadas e que façam parte do
conjunto daquelas ações que ele pode executar. Neste sentido, é necessário compreender que
tipo de instruções podem ser executadas pelos computadores. Por que?
Para que possamos programá-los – instruí-los com a sequência de ações necessárias para resolver
um determinado problema – de modo que realizem a tarefa do modo desejado. Em suma: basta
que eu escreva um conjunto de passos em qualquer língua que o meu computador realiza a tarefa que
eu quiser? Não, isso é uma descrição narrativa que utiliza a linguagem natural para especificar
os passos para a realização das tarefas – são ambíguas e não estruturadas.
Linguagem de Máquina
Além do fato de o computador necessitar que lhe instruam com ações bem específicas, estas
ações devem ser passadas para o computador numa linguagem que ele possa entendê-las,
chamada linguagem de máquina. Esta linguagem é composta somente por números,
representados de forma binária (0 e 1), que – sob o ponto de vista do computador – representam as
operações e os operandos que serão usados no processamento do programa.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
7
69
Para um ser humano, a linguagem de máquina é extremamente difícil de se compreender. Querem
um exemplo? A saudação “Olá, Estratégia Concursos” em linguagem de máquina seria:
01001111011011001110000100101100010001010111001101
11010001110010011000010111010011101001011001110110
10010110000101000011011011110110111001100011011101
010111001001110011011011110111001100100001
Vocês já imaginaram alguém programando na linguagem de máquina? Seria inviável! Existe,
portanto, uma linguagem representada por comandos, mas que reproduz as tarefas que serão
executadas dentro do computador, chamada Linguagem de Montagem (Assembly). No entanto,
mesmo a linguagem de montagem é difícil de programar – além de outros problemas como a
especificidade do processador. Vejam como seria a mesma saudação em Assembly:
4F6CE12C457374726174E9676961436F6E637572736F7321
Viram que já melhorou? Está melhor e já existem algumas letras, no entanto ainda seria muito
complicado para um ser humano programar utilizando essa linguagem. Vamos seguir...
Linguagem de Programação
Para facilitar a tarefa de programar um computador, foram criadas várias linguagens de
programação. Estas linguagens são uma maneira de tentar escrever as tarefas que o
computador vai realizar de maneira mais parecida com a linguagem natural. Embora ainda seja
muitas vezes complexo em comparação com a linguagem natural, um programa escrito em uma
linguagem de programação é muito mais fácil de ser implementado, compreendido e modificado.
As linguagens de programação são um meio termo entre a linguagem de máquina e a
linguagem natural. As linguagens mais parecidas com a linguagem de máquina são classificadas
como linguagens de baixo nível. Já as linguagens mais parecidas com a linguagem natural são
classificadas como linguagens de alto nível. Como um computador não entende diretamente
linguagens de programação, ela deve ser traduzida em código de máquina antes de ser executada.
Esse processo é chamado de tradução e é responsável por converter os comandos da linguagem de
programação nas instruções em linguagem de máquina, que o computador é capaz de processar!
Em suma: as linguagens de programação surgem – portanto – como uma solução para abstrair
a comunicação entre seres humanos e computadores de modo que o computador nos entenda
e nós os entendamos. A mesma saudação em uma linguagem de programação seria:
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
8
69
Nesse caso, a linguagem de programação utilizada foi a linguagem Python, mas existem
centenas de outras. Assim como seres humanos se comunicam por meio de diversas línguas
(Exemplo: português, inglês, francês, japonês, dinamarquês, entre outras), as máquinas também
podem se comunicar por meio de diversas linguagens de programação (Exemplo: Java, PHP, C++,
Python, Ruby, entre outras).
Bem, acho que todo mundo já ouviu falar alguma vez na vida em Código-Fonte. Se você não
sabe o que é um código-fonte, eu tenho uma tarefa para você executar agora: abra algum
navegador web (Ex: Google Chrome, Mozilla Firefox ou Microsoft Edge), acesse qualquer site que
vocês queiram e pressionem a Tecla F12. Pronto, vocês verão o código-fonte por trás do site
bonitinho que você está vendo...
Um código-fonte é umaversão do software da formaem que ele foi originalmente escrito –digitado
em um computador – por um programador humano em texto puro (caracteres alfanuméricos
humanamente legíveis). Todo software ou site possui um código-fonte, que é um conjunto de
palavras organizadas de acordo com regras específicas. Essas palavras que formam o algoritmo
são escritas – em geral – utilizando linguagens de programação.
Uma vantagem interessante da linguagem de programação em relação à linguagem de máquina é
que um programa escrito em linguagem de máquina – como contém instruções escritas para um
processador específico – só poderá ser utilizado naquele processador ou em similares. Em
contrapartida, uma linguagem de programação, como contém somente instruções abstratas
do que fazer, pode ser executado em qualquer processador ou máquina.
Pseudocódigo
O pseudocódigo é uma linguagem intermediária entre a linguagem natural e a linguagem de
programação. Ela utiliza um conjunto restrito de palavras-chave, em geral na língua nativa do
programador, que tem equivalentes nas linguagens de programação. Além disso, o pseudocódigo
não requer a rigidez sintática necessária numa linguagem de programação, permitindo que um
aprendiz se atenha à lógica do algoritmo e, não, ao formalismo da sua representação.
À medida que se obtém mais familiaridade com os algoritmos, o pseudocódigo pode ser traduzido
para uma linguagem de programação. Por essa razão, ele é considerado um excelente instrumento
pedagógico para ensinar linguagens de programação. Em suma, um pseudocódigo é uma
representação abstrata de um algoritmo utilizando uma linguagem simples sem necessidade
de conhecer a sintaxe correta de nenhuma linguagem de programação.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
9
69
Pode-se dizer também que ele é uma simulação de uma linguagem de programação real, mas que
–naverdade – é uma linguagem de programação “de mentirinha”.Logo,ela não pode ser utilizada
para criar softwares de verdade, mas são excelentes para ajudar a entender a lógica. Um tipo
de pseudocódigo brasileiro é o Portugol ou Português Estruturado. O que é isso, Diegão? Cara, é
uma pseudolinguagem utilizada para ensinar algoritmos em português.
Sim, em português! Porque vocês perceberão que a imensa maioria
das linguagens de programação do mercado utilizam como base a
língua inglesa. Professor, esse português estruturado é moleza de
entender? Galera, embora ele seja uma linguagem simplificada, ele
possui todos os elementos básicos necessários para construir um
algoritmo por meio de uma estrutura semelhante à de uma
linguagem de programação de computadores.
Dessa forma, resolver problemas com português estruturado pode ser uma tarefa tão complexa
quanto a de escrever um programa em uma linguagem de programação qualquer, porém utilizando
uma linguagem mais simples! Bacana? A imagem anterior é um exemplo de português estruturado.
Comparem com o exemplo da linguagem de programação e vocês notarão que a diferença está
na língua utilizada, mas continua sendo um algoritmo.
Fluxograma
Além do português estruturado, é possível representar um algoritmo também por meio de um
Fluxograma! O que é isso, professor? É uma espécie de diagrama utilizado para documentar
processos, ajudando o leitor a visualizá-los, compreendê-los mais facilmente e encontrar falhas ou
problemas de eficiência, como mostra a imagem abaixo. Nada como usar imagens – agora vai ficar
beeeeem mais fácil de entender. Vamos ver um exemplo...
O que mostra o diagrama anterior? Ele mostraum algoritmo – conjunto de instruções – para comprar
um curso de informática. Você acessa o site do Estratégia Concursos, depois procura por cursos
do Prof. Diego Carvalho, baixa e acessa a aula demonstrativa, lê e decide se gostou ou não!
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
10
69
Gostou? Compra para estudar! Não gostou? Compra também para ajudar! Brincadeira, pessoal! Com
um fundo de verdade! Mas é brincadeira (mas é verdade...).
Bem, nós vimos então que podemos representar algoritmos por meio de Descrições Narrativas,
Linguagens de Programação, Pseudocódigos ou Fluxogramas! Em geral, os fluxogramas são mais
utilizados para leigos; pseudocódigo para usuários um pouquinho mais avançados; e linguagens de
programação para os usuários avançados. Agora que já vimos diversas representações de
algoritmos, vamos falar de conceitos mais específicos e avançados.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
11
69
NOÇÕES DE PYTHON
Conceitos Básicos
INCIDÊNCIA EMPROVA: ALTA
Antes de iniciar a aula, é importante mencionar que vários exemplos dessa aula foram retirados ou
inspirados em exemplos do W3Tutorials (www.w3schools.com/python). Não fizemos isso porque
somos preguiçosos, mas por dois motivos: (1) os exemplos são excelentes; (2) essa é umadas
fontes de inspiração das bancas. Além disso, eu sugiro que vocês tenham sempre aberta uma
janela com um interpretador online para que vocês possam testar o que veremos. Recomendo esse:
https://www.programiz.com/python-programming/online-compiler/
BASTAESCREVER OCÓDIGONA ESQUERDA,CLICAR EM RUNE VISUALIZAR ORESULTADO NADIREITA
O que é Python? Python é uma linguagem de programação de alto nível, interpretada,
multiparadigma e case-sensitive sendo bastante utilizada para desenvolvimento web, criação
de fluxos de trabalho, conexão com bancos de dados, resolução de problemas matemáticos,
prototipação de software, entre outros. Eu sei, eu sei que você tomou aquele susto, mas relaxa
que nós vamos entender cada um desses conceitos. Não é tão difícil quanto parece...
PrincipaisCARACTERÍSTICAS DESCRIÇÃO
ALTO NÍVEL
Trata-se de uma linguagem de alto nível porque é uma linguagem com nível de
abstração bastante elevado, bem longe do código de máquina e mais próximo da
linguagem humana. Em outras palavras, o Python está muito mais próximo à forma
humana de pensar/escrever do que dos comandos entendidos por um processador.
INTERPRETADA
Trata-se de uma linguagem interpretada porque seu código-fonte é executado linha a
linha por um interpretador (software que traduz uma linguagem em outra) e depois
pelo sistema operacional, isto é, seu código -fonte não precisa ser totalmente
transformado em código de máquina para somente depois ser executado1
.
MULTIPARADIGMA
Trata-se de uma linguagem multiparadigma porque suporta mais de um paradigma
de programação. No caso, eles são: imperativo, procedural, funcional e orientado a
objetos. Paradigmas são formas diferentes de resolver problemas – alguns utilizam
funções, outros utilizam objetos, outros procedimentos e assim por diante.
1
Isso significa que o código-fonte pode ser executado linha por linha em tempo real à medida que sendo traduzida pelo interpretador. Há outras
linguagens que são compiladas, isto é, primeiro traduz todo o programa e só depois pode ser executada.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
12
69
CASE SENSITIVE
Trata-se de uma linguagem case-sensitive, isto é, capaz de diferenciar maiúsculas e
minúsculas. Em outras palavras, isso significa que as variáveis nome, Nome e NOME
são diferentes entre si, uma vez que possuem diferenças de caixa em sua grafia.
Acabou? Não acabou! Python é uma linguagem multiplataforma, podendo ser utilizada no
Windows, Linux, MacOS, etc. Além disso, ele é fácil de aprender e possui uma linguagem simples
extremamente semelhante com o inglês comum. Pode-se afirmar também que é uma linguagem
menos verbosa, isto é, sua sintaxe permite escrever softwares com menos palavras e linhas que
outras linguagens semelhantes. Acabou? Ainda não...
Python é uma linguagem de tipagem forte e dinâmica. Como é, Diego? Linguagens de
programação possuem um conjunto de regras sobre como tratar tipos de dados, sendo que a
tipagem de uma variável pode ser estática/dinâmica ou fraca/forte. Linguagens com tipagem
estática não permitem alteração de tipo de variável durante a execução do código-fonte; já
linguagens com tipagem dinâmica permitem essa alteração.
No código abaixo, nós declaramos uma variável com nome de var1 e a atribuímos o valor ‘Diego’,
logo a linguagem já infere que se trata de uma variável do tipo string (conjunto de caracteres)2. Em
seguida, nós atribuímos o valor 2020 (que é do tipo int) a essa mesma variável e não ocorre nenhum
erro. Ela permite que a variável var1 tenha seu tipo modificado de string para int (inteiros). Se uma
linguagem permite esse tipo de alteração durante a execução, trata-se de uma tipagem dinâmica.
var1 = ‘Diego’
var1 = 2020
Linguagens com tipagem forte não permitem realizar algumas operações com variáveis de tipos
diferentes sem conversão; já linguagens com tipagem fraca permitem realizar esse tipo de
operação. No código abaixo, declaramos uma variável com nome de var2 e a atribuímos o valor
‘20’, logo a linguagem já infere que se trata de uma variável do tipo string. Ué, Diego? Como assim?
Galera, tudo que vier entre aspas é considerado uma string (até mesmo números).
var2 = ‘20’
print(10 + var2)
Na linha seguinte, há um comando (print) para imprimir na tela a soma de 10 com var2 – sendo que
10 é do tipo int e var2 é do tipo string. Isso resultará em um erro porque o Python não permite
realizar uma soma entre variáveis string e int – seria necessário fazer uma conversão antes de
realizar a operação desejada. Linguagens de programação de tipagem fraca permitem fazer esse
tipo de operação sem precisar fazer uma conversão prévia de tipos.
2
Essa inferência é conhecida como Duck Typing (Tipagem de Pato). Esse nome vem da expressão: “Se anda como pato, nada como um pato e faz
quack como um pato, então provavelmente é um pato”. Em outras palavras, isso significa que o tipo de uma variável é inferido pelo interpretador
em tempo de execução pelo valor que foi atribuído a ela. Se eu atribuo um valor do tipo string, significa que a variável é do tipo string; se eu atribuo
um valor do tipo inteiro, significa que a variável é do tipo inteiro; e assim por diante.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
13
69
Python tem tipagem forte, logo teríamos que fazer uma conversão explícita transformando var2
em um inteiro antes de imprimir o valor em tela. Se ela tivesse tipagem fraca, faria essa conversão
implicitamente, sem a necessidade de o programador indicar que deseja fazer uma conversão.
Enfim, Python é uma linguagem de tipagem forte e dinâmica, porque não possui conversão
implícita de tipos e porque permite alterar o tipo de uma variável durante a execução do código.
Por fim, essa linguagem de programação apresenta código-fonte agrupado por indentação. O que
diabos é isso, professor? Indentar é o recuo do texto em relação a sua margem! Em outras palavras,
se antes de escrevermos uma instrução, utilizarmos quatro espaçamentos da margem esquerda até
a instrução propriamente dita, podemos dizer que a indentação utilizada possui quatro espaços.
Esse termo vem do inglês indentation e é bastante comum em linguagens de programação.
Algumas linguagens utilizam marcadores textuais para identificar e delimitar blocos de código,
como chaves ({ }) ou palavras-chave (begin/end). O Python não utiliza nenhum marcador textual
para isso – ele utiliza apenas a profundidade da indentação. Dessa forma, códigos que estiverem
rente a margem esquerda farão parte do primeiro nível hierárquico; os que estiverem a quatro
espaços da margem esquerda estarão no segundo nível hierárquico; e assim por diante.
Todos os blocos são delimitados pela profundidade da indentação e, por conta disso, sua
organização é vital para o programa escrito nessa linguagem. A sua má utilização acarretará à
não execução ou no mal funcionamento do software. Assim, se você criar um while e quiser colocar
4 comandos dentro dele, terá que colocar todos com uma indentação de alguns espaços. Quantos
espaços? Quantos você quiser – desde que seja a mesma quantidade no bloco. Veja o exemplo:
No código da esquerda, a linha 2 cria um loop de repetição em que as linhas 3 a 6 serão repetidas
enquanto i < 3. Sabemos disso porque todas essas linhas estão com indentação interna ao comando
while. Por sua vez, a linha 5 está em um bloco pertencente ao if da linha 4, pois está quatro espaços
para dentro do if. Dessa forma, a indentação (ou endentação) em Python é estrutural e não apenas
um elemento de organização visual, tanto que o código da esquerda é diferente.
Outras CARACTERÍSTICAS
Python permite utilizar ponto-e-vírgula (;) para delimitar comandos, mas de forma opcional – assim como em
outras linguagens como JavaScript e Typescript.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
14
69
==fd2a2==
Python é distribuída sob uma licença própria (compatível com a GPL), que permite a distribuição – comercial ou
não – tanto da linguagem quanto de aplicações desenvolvidas nela, em formato binário ou código fonte, bastando
cumprir a exigência de manter o aviso de copyright.
Python permite que programas sejam compilados para um formato portável chamado de bytecode. Essa
característica faz com que programas escritos nessa linguagem com uma biblioteca padrão sejam executadas da
mesma forma em diversos sistemas operacionais que possuam um software interpretador de Python.
Python possui uma interface com muitas bibliotecas e sistemas de janela, sendo extensível em C/C++. Além disso,
pode ser utilizada como linguagem de extensão para aplicações que necessitam de uma interface programável
(muito comum em aplicativos, jogos, processamento de textos, dados científicos e motores de busca).
Python possui funcionalidades para expressões regulares; sockets; threads; data/tempo; analisadores XML;
analisadores de arquivos de configuração; manipulação de arquivos e diretórios; persistência de dados; unidades
de testes; bibliotecas clientes para os protocolos HTTP, FTP, IMAP, SMTP e NNTP.
Python suporta o paradigma orientado a objetos com todos os seus componentes, tais como herança (simples ou
múltipla), polimorfismo, sobrescrita, encapsulamento, abstração, reflexão, introspecção, etc! Não é necessário
entender o que isso significa exatamente, apenas saber que ele suporta e que tudo em Python é um objeto3
.
Galera, apenas para finalizar é importante mencionar que houve algumas mudanças introduzidas
na virada da versão do Python de 2.x para o Python 3.x. Vocês podem acabar fazendo questões de
provas antigas e ficarem um pouco confusos, por isso estou fazendo essa ressalva! Em termos de
concurso, acredito que vale mencionar apenas uma mudança: o print mudou de instrução para
função. O que isso significa na prática? Significa apenas que agora precisa de parênteses:
print 'Olá Mundo' # até versão 2.7
print('Olá Mundo')# a partir da versão 3.0
Tipos de Operadores
INCIDÊNCIA EMPROVA: ALTA
Assim como na matemática, operadores são elementos utilizados em linguagens de programação
para realizar operações. Existem quase 40 operadores em Python, mas nós não vamos ver todos
porque diversos deles possuem um péssimo custo/benefício e não valerá a pena! Vamos nos ater
– portanto – aos operadores mais cobrados em prova. Abaixo serão apresentadas categorias de
operadores com suas descrições e exemplos.
Operadores Matemáticos são os mais simples e mais comuns.Nós aprendemos todos eles na época
de escola, então vocês não terão dificuldades:
SÍMBOLO Operadores Aritméticos exemplo
+ Soma 10 + 10 = 20.
- Subtração 20 - 20 = 0.
* Multiplicação 15 * 25 = 375.
3
Esse paradigma trata um software como uma coleção de agentes interconectados chamados de objetos, que são uma posição na memória que
funciona como abstração para qualquer coisa que tenha atributos e comportamentos (Ex: se eu quero representar pessoas em um software, eu posso
criar um Objeto Pessoa e configurar seus atributos – pessoa tem nome, idade, altura, etc – e seus comportamentos – pessoa fala, come, anda, etc.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
15
69
/ Divisão 25 / 4 = 6,25.
// Divisão com Piso 25 // 4 = 6 (6,25 arredondado para baixo) .
** Potenciação 2 ** 5 = 32.
% Módulo 30 % 7 = 2 (resto da divisão).
Operadores de Atribuição são usados para atribuir valores a variáveis! Considerem na tabela abaixo
que as operações seguem uma sequência (o resultado da linha atual depende da linha anterior)4:
SÍMBOLO Operadores de atribuição exemplo
= Atribuição Simples x = 10 é o mesmo que atribuir o valor 10 a x.
+= Atribuição com Soma x += 1 é o mesmo que x = x + 1, logo x = 10 + 1 = 11.
-= Atribuição com Subtração x -= 6 é o mesmo que x = x - 6, logo x = 11 – 6 = 5.
*= Atribuição com Produto x *= 2 é o mesmo que x = x*2, logo x = 5 * 2 = 10.
/= Atribuição com Divisão x /= 5 é o mesmo que x = x / 5, logo x = 10 / 5 = 2.
Operadores de Comparação são utilizados para comparar valores! Nos exemplos abaixo, considere
sempre que x = 1 e y = 2. Vejamos...
SÍMBOLO Operadores de comparação exemplo
== Igual x == y retorna Falso.
!= Diferente x != y retorna Verdadeiro.
> Maior que x > y retorna Falso.
< Menor que x < y retorna Verdadeiro.
>= Maior ou igual a x >= y retorna Falso.
<= Menor ou igual a x <= y retorna Verdadeiro.
Operadores Lógicos são utilizados para combinar condições em expressões e também são
frequentemente utilizados em Python. Nos exemplos abaixo, considerem que x = 10 e y = 20:
SÍMBOLO Operadores Lógicos exemplo
and
Retorna Verdadeiro se ambas
condições forem Verdadeiras
x == 10 and y > 20 retorna Falso.
or
Retorna Verdadeiro se uma das
condições for Verdadeira
x == 10 or y > 20 retorna Verdadeiro.
not
Inverte o resultado de uma
condição qualquer
not(x == 10 or y > 20) retorna Falso.
Operadores de Associação são utilizados para verificar se um conjunto de valores está presente em
um objeto. Vejamos como funciona:
4
Diferente de outras linguagens, Python não possui o operador incremento (++) e decremento (--).
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
16
69
SÍMBOLO Operadores de associação exemplo
in
Retorna Verdadeiro se o
conjunto de valores estiver
presente no objeto
x = [“Flamengo”, “Vasco”]
y = “Botafogo” in x
print(y) retornará Falso porque Botafogo não está na lista.
not in
Retorna Verdadeiro se o
conjunto de valores não estiver
presente no objeto
x = [“Flamengo”, “Vasco”]
y = “Flamengo” not in x
print(y) retornará Falso porque Flamengo está na lista.
Funções
INCIDÊNCIA EMPROVA: média
Uma função é um bloco de código que é executado apenas quando é invocado. São três passos
bem simples: (1) uma função é invocada; (2) é passado algum dado como parâmetro ou não; (3) e
algum dado é retornado como resultado. No Python, uma função é definida utilizando a palavra-
chave def. Sempre que você vir essa palavra em um código-fonte, saiba que ela está definindo uma
função (lembrando que a utilização de chaves para delimitar o bloco é facultativa). Seguindo...
Sintaxe: def NomeFunção(argumentos):
def BomDia():
print('Bom dia!')
No código acima, foi definida uma função chamada BomDia(). Toda vez que essa função for
invocada, será impresso na tela as palavras “Bom dia!”. Professor, o que você quer dizer com invocar
uma função? Invocar significa chamar essa função para que ela seja executada. Caso eu deseje que
essa função seja executada em algum ponto do meu código-fonte, eu posso invocá-la bastando
apenas chamar seu nome: BomDia().
Professor... e se a minha função precisar de alguns dados para que ela consiga processar alguma
informação e retornar um resultado? Sem problemas! Nós podemos passar alguns parâmetros –
também chamados de argumentos – dentro dos parênteses separados por vírgulas. Modificando
um pouco a função definida no código anterior, nós podemos inserir um nome como parâmetro
de modo que seja impressa uma mensagem que dependerá do parâmetro passado:
def BomDia(nome):
print('Bom dia, ',nome)
Note que agora a função precisa de um parâmetro para que possa ser executada! Logo, se eu invoco
essa função como BomDia(‘Diego’), será impressa a mensagem “Bom dia, Diego”. Vejam só:
BomDia('Diego Carvalho') #Retornará Bom dia, Diego Carvalho
BomDia('Renato da Costa') #Retornará Bom dia, Renato da Costa
BomDia('Ricardo Vale') #Retornará Bom dia, Ricardo Vale
BomDia('Herbert Almeida') #Retornará Bom dia, Herbert Almeida
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
17
69
Como já dissemos, é possível também passar mais de um parâmetro para uma função. Para tal,
basta separá-los por vírgula dentro dos parênteses:
def BomDia(nome1, nome2):
print('Bom dia, ' + nome1 + ' e ' + nome2)
BomDia('Diego','Renato') #Retornará Bom dia, Diego e Renato
Em todas as funções apresentadas, não se retornou nenhum resultado (dados apenas foram
impressos em tela). No entanto, é possível retornar algum valor usando a palavra-chave return:
def MultiplicaPorCinco(numero):
return 5*numero #Retornará o número do parâmetro multiplicado por 5
print(MultiplicaPorCinco(1)) #Imprimirá 5*1 = 5
print(MultiplicaPorCinco(2)) #Imprimirá 5*2 = 10
print(MultiplicaPorCinco(3)) #Imprimirá 5*3 = 15
print(MultiplicaPorCinco(4)) #Imprimirá 5*4 = 20
print(MultiplicaPorCinco(5)) #Imprimirá 5*5 = 25
Um dado importante é que uma variável somente está disponível dentro da região em que ela é
criada – chamamos isso de escopo! Como é, Diego? Vejam o código-fonte abaixo:
def minhaFuncao(y):
x = y + y #Escopo Local
print(x)
return x
x = 5 #Escopo Global
minhaFuncao(x)
print(x)
Notem que definimos inicialmente uma função chamada minhaFuncao( ). Toda variável criada
dentro dessa função possui um escopo local, logo somente podem ser utilizadas dentro dessa
função. Em seguida, temos x = 5 com uma indentação diferente, logo ele não possui escopo local
daquela função, ele possui um escopo global. Por que? Porque ele não foi criado dentro da função,
portanto ele existe e pode ser utilizado em qualquer parte do código.
Dito isso, vamos analisar o código! A função é definida (linhas 1 a 4), depois cria-se uma variável
x com valor 5 e chama-se a função com esse parâmetro (linha 7), logo minhaFuncao(5). Quando
essa variável vai para dentro da função, ela é recebida como y (minhaFuncao(y)). E essa função cria
uma variável x (que só existe dentro dela) e diz que x = y + y. Ora, quanto é y? y = 5, logo x = 5+5 = 10.
Na linha 3, a função imprime x (logo, imprime 10) e retorna 10.
Quando voltamos ao corpo principal do código-fonte, temos um print(x). Ora, quanto é x? Agora
que vem o pulo do gato! Aquele x utilizado na função só existe lá dentro porque ele tem escopo
local. Logo, quando voltamos ao corpo principal, ele não existe! No entanto, existe outro x no corpo
principal. Qual? Aquele definido na linha 6! Logo, a linha 8 imprimirá 5! Legal, né? Imprimimos x
duas vezes, mas dentro da função ele tem valor 10 e fora da função ele tem valor 5.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
18
69
Por fim, é importante falar sobre funções/expressões lambda. O que é isso, Diego? São pequenas
funções anônimas! Como assim? Galera, essas funções são úteis para deixar o código mais simples
e legível. Elas são funções de uma única linha, isto é, não possuem nome e são declaradas como
variáveis. Além disso, sua sintaxe não utiliza a palavra-chave def e nem utilizam a palavra return
antes do comando porque se considera que haverá um retorno implícito.
Sintaxe: lambda lista_de_argumentos : expressão
Uma função anônima é útil principalmente nos casos em que precisamos de uma função para ser
passada como parâmetro para outra função e que não será mais necessária após isso – como se
fosse “descartável”. Vejam no exemplo abaixo a criação de uma função anônima que recebe dois
parâmetros – x e y – e retorna a soma das duas variáveis. Essa função anônima é atribuída à
variável s, que quando é invocada retorna essa soma:
s = lambda x,y : x+y
print(s(10,20)) #Retornará 10+20 = 30
Para finalizar, vamos ver uma comparação de uma função comum apresentada anteriormente com
uma função lambda. Vejamos...
def quadrado(x):
return x*x
print(quadrado(2)) #Retornará 4
Notem que se trata de uma função comum. Como poderíamos transformar essa função em uma
expressão lambda? Basta utilizar a sintaxe apresentada anteriormente. Logo, teríamos...
quadrado = lambda x: x*x
print(quadrado(2)) #Retornará 4
Comentários
INCIDÊNCIA EMPROVA: baixa
A utilização de comentários é uma prática comum em programação. Seu objetivo é adicionar
descrições em partes especificas do código, seja para documentá-lo, seja para descrevê-lo, ou
mesmo, para marcar que uma determinada linha, ou um conjunto de linhas, não devem ser
executadas. Podem ser utilizados para documentar programas, classes, funções, variáveis,
constantes ou o que mais você desejarmos.
Quando criamos uma funcionalidade, é importante que o código possua uma documentação para
que os outros programadores (e até nós mesmos) entendam qual foi a lógica utilizada. Para
adicionarmos comentários, utilizamos uma marcação especial a fim de informar ao
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
19
69
interpretador para não interpretar os caracteres contidos na notação que demarca trechos de
comentários. E que marcação seria essa, professor?
No caso do Python, há notações diferentes para comentários de uma única linha e comentários de
mais de uma linha. Caso você deseje fazer um comentário de apenas uma linha, pode utilizar o
caractere cerquilha (#). Tudo que estiver à frente desse caractere deve ser ignorado pelo
interpretador. Caso você deseje fazer um comentário com mais de uma linha, pode utilizar aspas
triplas (simples ou duplas). Vejamos alguns exemplos:
# Comentário para documentar a função "Olá, Mundo!"
print("Olá, Mundo!")
’’’
Comentário para documentar
a função "Olá, Mundo!"
com mais de uma linha
e aspas simples
’’’
print("Olá, Mundo!")
”””
Comentário para documentar
a função "Olá, Mundo!"
com mais de uma linha
e aspas duplas
”””
print("Olá, Mundo!")
Tipos e Variáveis
Definições
INCIDÊNCIA EMPROVA: baixíssima
Em nível de hardware, seu computador possui um componente chamado Memória RAM, que é
responsável – grosso modo – por armazenar dados, sendo composta por milhões e milhões de
posições ou espaços físicos. Em nível de software, dados são armazenados – em geral – em
variáveis,que sãoessas posições na memória responsáveis porarmazenardados e identificadas
por um nome.
Notem abaixo que há uma posição na memória do computador que guarda um espaço físico e que
nós demos o nome dessa posição de numeroDaConta. Logo, esse é o nome que identifica esse
endereço na memória do computador. Essa posição pode armazenar uma variável, que são dados
que podem variar com o tempo ou circunstância. Note pela imagem que atualmente essa variável
está armazenando o valor 4823 na posição numeroDaConta.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
20
69
O conteúdo de uma variável pode ser alterado, consultado ou apagado diversas vezes durante
a execução de um algoritmo, porém ovalorapagado será perdido. Eugosto de pensar navariável
como uma caixa aberta, em que você inserir, retirar ou modificar coisas de dentro. Em contraste
com uma constante, que seria uma caixa em que – uma vez inserido algo dentro – não mais permite
inserções, alterações ou remoções enquanto o programa estiver sendo executado.
Galera, assim como as línguas faladas, as linguagens de programação possuem o que chamamos
de declarações. O que são declarações? Basicamente são pensamentos completos e individuais –
por exemplo: “Eu quero café” ou “Está chovendo”. Usando palavras diferentes, podemos mudar o
significado – por exemplo: “Eu quero café” para “Eu quero unicórnios”. No entanto, não podemos
mudar de “Eu quero café” para “Eu quero chovendo” – que não faz sentido gramatical.
O conjunto de regras que governam a estrutura e composição de declarações em uma
linguagem é chamado de sintaxe. Assim como o idioma Português possui uma sintaxe, todas as
linguagens de programação também possuem. Vejam só: a é igual a 5 é uma declaração na língua
portuguesa; a = 5 também é uma declaração, mas na linguagem de programação Python. Neste
caso, a declaração diz que uma variável chamada a armazena o número inteiro 5.
Galera, quando uma declaração atribui um valor a uma variável, nós chamamos isso de
"declaração de atribuição". É possível também expressar coisas mais complexas como:
A é 5;
B é 10;
C é A mais B;
O que o algoritmo acima está querendo dizer? Este algoritmo diz ao computador para definir a
variável A como 5, a variável B como 10, e, finalmente, somar A e B e armazenar o resultado na
variável C. Legal, não é? Note que podemos chamar as variáveis de qualquer coisa que nós
quisermos desde que cumpra a sintaxe da linguagem de programação escolhida. Em vez de A,
B e C, poderíamos chamar de Maçã, Pera e Uva.
Pessoal, é claro que uma melhor prática seria nomeá-las com coisas que façam sentido no caso de
alguém mais tentar entender seu código. Imaginem vocês tentando ler um código escrito por outra
pessoa! Fica mais fácil de compreender Maçã, Pera e Uva do que A, B e C. Concordam? Legal! As
declarações atribuem identificadores para variáveis, tipos, funções, entre outros. Vamos agora
ver como tudo isso funciona especificamente no Python! o/
Identificadores
INCIDÊNCIA EMPROVA: baixa
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
21
69
O que é uma variável? Variáveis são uma espécie de contêiner para armazenar valores de dados. No
Python, as variáveis possuem duas particularidades: (1) variáveis são consideradas um tipo de
objeto; (2) variáveis não precisam ser previamente declaradas. Como é, Diego? Em outras
linguagens de programação, é necessário usar um comando para declarar uma variável. No Python,
não é necessário usar comando nenhum, basta informar o nome e o valor que será armazenado.
nome = "Diego"
idade = 31
Vejam acima que não é necessário usar nenhum comando, eu simplesmente inseri o nome da
variável e o seu valor! Em outras linguagens de programação, eu teria que fazer algo como:
var nome = "Diego"
var idade = 31
Além disso, não é necessário informar qual é o tipo da variável, isto é, quais tipos de valores serão
armazenados na variável. Em outras linguagens de programação, eu teria que fazer algo como:
var string nome = "Diego"
var int idade = 31
É possível fazer várias atribuições de variáveis em uma mesma linha. Para tal, basta separar os
identificadores por vírgula do lado esquerdo da atribuição e manter a mesma ordem no lado direito:
nome, idade = "Diego", 31
Professor, eu posso dar qualquer nome para uma variável? Não é bem assim! Identificadores de
variáveis válidos devem obedecer às seguintes regras:
 Começar necessariamente com uma letra ou _ (underline);
 Jamais devem começar com um número;
 Conter caracteres alfanuméricos e undelines (a-z, A-Z, 0-9 e _);
 São Case-Sensitive, isto é, capazes de diferenciar maiúscula de minúscula.
Essa mesma regra vale também para identificação de funções, classes, módulos, entre outros.
Vejamos alguns exemplos de nomes válidos e inválidos:
NOMESVÁLIDOSDE VARIÁVEIS NOMES INVÁLIDOS DE VARIÁVEIS
nomevariavel = "Diego" 2nomevariavel = "Diego"
nome_variavel = "Diego" nome-variavel = "Diego"
_nome_variavel = "Diego" nome variavel = "Diego"
nomeVariavel = "Diego" nome#variavel = "Diego"
NOMEVARIAVEL = "Diego" Nome%variavel = "Diego"
nomevariavel2 = "Diego" n0m3v@r1@vel = "Diego"
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
22
69
O Python possui uma função chamada print() responsável por imprimir na tela do computador o
valor de uma variável. Vejamos como funciona:
nome = "Diego"
idade = 31
print(nome) #Imprimirá: Diego
print(idade) #Imprimirá: 31
Para imprimir um texto junto com o valor de uma variável, basta utilizar o caractere +. Lembrando
que esse caractere serve tanto para somar o valor de variáveis quanto para realizar concatenações.
nome = "Diego"
idade = 31
print("Prof. " + nome + " tem " + str(idade) + " anos") #Imprimirá: Prof. Diego tem 31 anos
Professor, o que é essa função str( ) com o parâmetro idade? Muito observador você... nós vamos
entender no próximo tópico :)
Tipos de Dados
INCIDÊNCIA EMPROVA: ALTA
CATEGORIA TIPO PYTHON Exemplo
BOOLEANO Booleano bool
x = True
x = False
numérico
Inteiro int
x = 10
x = -5
Ponto Flutuante float
x = 10.7
x = -2.8
Complexo complex
x = 345j
x = 2-9j
textual Texto str
x = 'texto'
x = "texto"
Coleção/sequência
Lista list
x = [4, 8]
x = list()
Tupla tuple
x = (5, 10)
x = tuple()
Set set
x = {2, 4}
x = set( )
Dicionário dictionary
x = {'nome': 'Diego', idade: 31}
Nos próximos tópicos, vamos detalhar os tipos coleção e dicionário! Por enquanto, é importante
mencionar alguns detalhes sobre os tipos booleano, numérico e textual. O tipo booleano não
tem nada demais – ele só representa dois valores: True ou False. Isso é extremamente útil em
programação para avaliar se alguma expressão é verdadeira ou falsa. Quando você compara dois
valores, por exemplo, retorna-se um valor verdadeiro ou falso.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
23
69
Já os números podem ser inteiros, ponto flutuante ou complexos. Inteiro é um número positivo
ou negativo sem decimais (Ex: 2, -50, 137); Ponto Flutuante é um número positivo ou negativo com
um ou mais decimais (Ex: -0.5, 3.1415, 137.0); e Complexo é um número escrito com a letra j para
indicar a parte imaginária (Ex: 8j, -14j, 500j). Vocês se lembram quando estudaram números
complexos na escola? Pois é, pode ignorar aqui também porque isso não cai.
Por fim, variáveis textuais/literais são cadeias de caracteres chamadas de string. Trata-se de
uma sequência de caracteres geralmente utilizada para representar caracteres, palavras, frases ou
textos. Os valores podem virdentro de aspas simples ou aspas duplas (Ex: ‘Diego’ ou “Diego”). Além
disso, os caracteres que compõem uma string podem seracessados individualmente. Para tal, basta
utilizar colchetes. Vejamos...
nome = "Diego"
print(nome[0]) #Retornará o caractere de índice 0 = “D”
Nós falamos que uma string é uma cadeia de caracteres. Logo, no exemplo acima, é como se nome
fosse uma variável que armazenasse [“D”,”i”,”e”,”g”,“o”]. Cada letra nessa cadeia está associada a
um índice sequencial: nome[0] = “D”; nome[1] = “i”; nome[2] = “e”; nome[3] = “g”; nome[4] = “o”. E
se você quisesse retornar apenas os caracteres do meio dessa string? Nesse caso, bastaria utilizar a
instrução print(nome[1:4] = “ieg”). Vamos ver agora algumas funções textuais úteis:
funções DESCRIÇÃO EXEMPLO
capitalize()
Converte o primeiro caractere em maiúscula. x = “olá, mundo!”
print(x.capitalize()) #retorna “Olá, mundo!”
find()
Retorna a posição da primeira ocorrência de
um valor em uma string ou -1 se não existir.
x = “Uma vez Flamengo, sempre Flamengo!”
print(x.find(“vez”)) #retorna 4
index()
Semelhante ao find(), mas retorna uma
exceção caso o valor não exista.
x = “Uma vez Flamengo, sempre Flamengo!”
print(x.index(“vasco”)) #retorna ValueError
len()
Retorna o tamanho da string. x = “Uma vez Flamengo, sempre Flamengo!”
print(len(x)) #retorna 34
split()
Divide substrings encontradas a partir de um
separador especificado e retorna uma lista.
x = “Olá, Mundo!”
print(x.split(“,”)) #retorna ['Olá', ' Mundo!']
strip()
Remove espaços em branco (ou caracteres
dentro do parêntese) do início/fim da string.
x = “ Olá, mundo! ”
print(x.strip()) #retorna “Olá, Mundo!”
É importante falar rapidamente sobre casting! Esse é um recurso que permite definir ou converter
o tipo de uma variável. Em geral, isso é feito por meio de três funções:
FUNÇÃODE CASTING DESCRIÇÃO
int()
Converte variáveis do tipo inteiro, ponto flutuante ou string em um inteiro.
#Exemplos:
x = int(100) #x será 100
y = int(4.8) #y será 4
z = int('5') #z será 5
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
24
69
float()
Converte variáveis do tipo inteiro, ponto flutuante ou string em um ponto flutuante.
#Exemplos:
x = float(100) #x será 100.0
y = float(3.6) #y será 3.6
z = float('2') #z será 2.0
str()
Converte variáveis do tipo inteiro, ponto flutuante ou string em uma string.
#Exemplos:
x = str('Diego') #x será ‘Diego’
y = str(1234567) #y será ‘1234567’
z = str(3.14159) #z será ‘3.14159’
Estruturas de Dados
Meus queridos, nós estudamos cinco tipos de dados no tópico anterior (booleano, inteiro, ponto
flutuante, complexo e textual). Todos eles possuem uma característica em comum: são capazes de
armazenar um único dado. No entanto, para armazenar múltiplos itens dentro de uma única
estrutura, utilizamos estruturas de dados. No caso do Python, essas estruturas de dados são
chamadas de coleções (collections). Vamos entender isso melhor...
Uma coleção é um contêiner utilizado para armazenar uma coleção de dados. Em outras
palavras, trata-se de uma estrutura de dados utilizada para armazenar objetos. Galera, em
algumas situações você precisa armazenar um conjunto de valores e – não apenas – um único valor.
Para escolher qual coleção será utilizada, é importante entender as propriedades de cada tipo a fim
de tirar o melhor possível de cada estrutura. Bem, existem quatro tipos de coleção...
TIPODE COLEÇÃO TRADUÇÃO DESCRIÇÃO
LIST LISTA
Trata-se de uma coleção de valores ordenados, mutáveis e indexáveis que pode
conter valores duplicados.
TUPLE TUPLA
Trata-se de uma coleção de valores ordenados, imutáveis e indexáveis que pode
conter valores duplicados (também podem ser chamadas de sequências).
SET CONJUNTO
Trata-se de uma coleção de valores desordenados, mutáveis e não indexáveis que
não pode conter valores duplicados.
DICTIONARY DICIONÁRIO
Trata-se de uma coleção de valores desordenados, mutáveis e indexáveis que não
pode conter valores duplicados.
Calma! Nós vamos explicar tim-tim por tim-tim cada uma dessas características das coleções em
tópicos específicos nas próximas páginas...
Listas
INCIDÊNCIA EMPROVA: Altíssima
Uma lista é uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores
duplicados e são delimitadas por colchetes. Vejamos um exemplo:
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
25
69
ListaFrutas = ["maçã", "carambola", "banana"]
print(ListaFrutas) #Retornará ['maçã', 'carambola', 'banana']
Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em
uma única variável. Legal, mas e se eu quiser acessar uma fruta específica? Vejamos...
ListaFrutas = ["maçã", "carambola", "banana"]
print(ListaFrutas[1]) #Retornará carambola
Galera, cada valor em uma lista é indexado por um número inteiro. O que isso significa? Significa
que existe um número inteiro que referencia cada valor da lista com o intuito de facilitar seu
acesso. Professor, não deveria ter retornado maçã em vez de carambola, uma vez que foi utilizado o
índice [1]? Não, porque – por convenção – adotou-se que o índice de lista começa sempre pelo [0]
(zero). Vejam só o que aconteceria se o código fosse assim:
ListaFrutas = ["maçã", "carambola", "banana"]
print(ListaFrutas[0]) #retornará maçã
print(ListaFrutas[1]) #retornará carambola
print(ListaFrutas[2]) #retornará banana
print(ListaFrutas[3]) #retornará IndexError: list index out range
Note que se eu tentar acessar o índice [3], retornará Erro de Índice: índice da lista fora de alcance.
Professor, e se eu quiser modificar algum valor dessa lista? É muito simples também...
ListaFrutas[0] = "manga"
ListaFrutas[2] = "carambola"
print(ListaFrutas) #retornará ['manga', 'carambola', carambola]
Percebam que eu mudei o valor armazenado no índice [0] e índice [1] da lista e o resultado
correspondeu aos novos valores. Dito isso, vamos relembrar nossa definição inicial de lista? Uma lista
é uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados.
Uma lista é uma coleção de valores? Sim, nós vimos que ele é capaz de armazenar múltiplos dados.
Os valores de uma lista são ordenados? Sim, ser ordenado significa que há uma ordem qualquer.
Professor, é necessariamente uma ordem alfabética ou numérica? Não, pode ser qualquer ordem! Os
valores de uma lista são mutáveis? Sim, nós vimos que é possível modificar seus valores no exemplo
anterior. Os valores de uma lista podem ser duplicados? Sim, em nossa lista final, há duas ocorrências
da fruta ‘carambola’. Bem, agora nós já conseguimos entender cada ponto da definição de lista,
então chegou o momento de nos aprofundar mais...
O que acontece se eu utilizar um índice negativo em uma lista? Galera, um índice negativo significa
que a lista começa do fim para o início. Como é, Diego? É só ver a lista de modo invertido, olha só...
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
26
69
ListaFrutas = ["maçã", "carambola", "banana"]
print(ListaFrutas[-1]) #retornará banana
print(ListaFrutas[-2]) #retornará carambola
print(ListaFrutas[-3]) #retornará maçã
print(ListaFrutas[-4]) #retornará IndexError: list index out range
Note que há uma observação: “maçã” está no índice [0] e no índice [-3]. Além disso, é possível
especificar uma extensão de índices também...
ListaFrutas = ["maçã", "carambola", "banana", "pera", "laranja", "amora"]
print(ListaFrutas[1:2]) #retornará [‘carambola’]
print(ListaFrutas[1:3]) #retornará [‘carambola’, ‘banana’]
print(ListaFrutas[1:4]) #retornará ['carambola', 'banana', 'pera']
print(ListaFrutas[1:5]) #retornará ['carambola', 'banana', 'pera', 'laranja']
Note que o valor contido na posição do índice à esquerda dos dois-pontos é retornado, mas o
valor contido na posição do índice à direita, não. Há também algumas variações:
ListaFrutas = ["maçã", "carambola", "banana", "pera", "laranja", "amora"]
print(ListaFrutas[:2]) #retornará ['maçã', 'carambola']
print(ListaFrutas[3:]) #retornará ['pera', 'laranja', 'amora']
Note que – se não inserirmos nenhum valor à esquerda – considera-se como [0] ; e – se não
inserirmos nenhum valor à direita, considera-se até o final da lista. Galera, nós temos visto diversos
exemplos em que todos os valores da lista são do tipo texto, mas eles poderiam ter outros tipos
(inclusive tipos diferentes em uma mesma lista). Por essa razão, dizemos que uma lista é um tipo
de coleção heterogênea.
Galera, nós já vimos que é possível criar funções em Python, mas já existem diversas funções
(ou métodos) prontos para serem utilizados. Vamos conhecê-los...
FUNÇÃO DESCRIÇÃO EXEMPLO
len( )
Função utilizada para retornar
quantos itens uma lista possui.
ListaQualquer = [2020, "Flamengo", True]
print(len(ListaQualquer))
#Retornará 3
append( )
Função utilizada para adicionar um
itemao final da lista.Pensando como
uma pilha, de modo inverso a uma
lista, ele adiciona um item no topo.5
ListaQualquer = [2020, "Flamengo", True]
ListaQualquer.append(5)
print(ListaQualquer)
#Retornará [2020, "Flamengo", True, 5]
insert( )
Função utilizada para adicionar um
item a um índice especificado.
ListaQualquer = [2020, "Flamengo", True, 5]
ListaQualquer.insert(3,"Bola")
print(ListaQualquer)
5
Em programação, existe o conceito de pilha. O que é uma pilha? Pensem em uma pilha de pratos: o último prato a ser adicionado é o primeiro a
ser lavado. Em programação, é semelhante: o último elemento a ser adicionado na pilha é o primeiro a ser recuperado, em contraste com a lista, em
que o primeiro elemento a ser adicionado é também o primeiro a ser recuperado (como em uma fila).
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
27
69
#Retornará [2020, "Flamengo", True, 'Bola', 5]
remove( )
Função utilizada para remover a
primeira ocorrência de um item
especificado em uma lista.
ListaQualquer = [2020, "Flamengo", True, "Bola", 5]
ListaQualquer.remove(2020)
print(ListaQualquer)
#Retornará ["Flamengo", True, "Bola", 5]
pop( )
Função utilizada para remover item
especificado (ou o último item se
nenhum item for especificado).
Pensando como uma pilha, de modo
inverso a uma lista, essa função
recupera o primeiro item quando não
é espeficiado.
ListaQualquer = ["Flamengo", True, "Bola", 5]
ListaQualquer.pop()
print(ListaQualquer)
#Retornará ["Flamengo", True, "Bola"]
ListaQualquer.pop(2)
print(ListaQualquer)
#Retornará ["Flamengo", True"]
del( )
Função utilizada para remover um
itemespecificado (ou a lista inteirase
o nenhum índice for especificado).
Caso a lista seja excluída, ela não
poderá mais ser referenciada.
ListaQualquer = ["Flamengo", True, "Bola", 5]
del ListaQualquer[3]
print(ListaQualquer)
#Retornará ["Flamengo", True, "Bola"]
del ListaQualquer #Excluirá a lista
clear( )
Função utilizada para esvaziar uma
lista.
ListaQualquer = ["Flamengo", True, "Bola", 5]
ListaQualquer.clear()
print(ListaQualquer)
#Retornará a lista vazia []
copy( )
Função utilizada para copiar uma
lista.
ListaQualquer = ["Flamengo", True, "Bola", 5]
ListaQualquer2 = ListaQualquer.copy()
print(ListaQualquer2)
#Retornará ["Flamengo", True, "Bola", 5]
list( )
Função utilizada para criar uma nova
lista.
ListaQualquer = list(("Flamengo", True, "Bola", 5))
print(ListaQualquer)
#Note que deve ter parênteses duplos
count( )
Função utilizada para retornar a
quantidade de vezes que um valor
específico aparece em uma lista.
ListaQualquer = ["Flamengo", True, "Flamengo", 5]
print(ListaQualquer.count("Flamengo"))
#Retornará 2 (“Flamengo aparece duas vezes”)
extend( )
Função utilizada para adicionar
elementos específicos de uma lista
ao final de outra lista.
ListaQualquer1 = ["Bola", 5]
ListaQualquer2 = ["Flamengo", True]
ListaQualquer1.extend(ListaQualquer2)
print(ListaQualquer1)
#Retornará ["Bola", 5, "Flamengo", True]
index( )
Função utilizada para retornar o
índice da primeira ocorrência de um
valor especificado.
ListaQualquer = ["Flamengo", True, "Bola", 5]
print(ListaQualquer.index("Flamengo")) #Retornará 0
print(ListaQualquer.index(True)) #Retornará 1
print(ListaQualquer.index("Bola")) #Retornará 2
print(ListaQualquer.index(5)) #Retornará 3
reverse( )
Função utilizada para inverter a
ordem dos elementos de uma lista.
ListaQualquer = ["Flamengo", True, "Bola", 5]
ListaQualquer.reverse()
print(ListaQualquer)
#Retornará [5, 'Bola', True, 'Flamengo']
sort( )
ListaQualquer = ["Flamengo", "Vasco", "Santos", "Bahia"]
ListaQualquer.sort()
print(ListaQualquer)
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
28
69
Função utilizada para ordenar uma
simples em ordem ascendente (por
padrão – sem necessidade de
parâmetros) ou descendente
(parâmetro reverse=True).
#Retornará ['Bahia', 'Flamengo', 'Santos', 'Vasco']
ListaQualquer.sort(reverse=True)
print(ListaQualquer)
#Retornará ['Vasco', 'Santos', 'Flamengo', 'Bahia']
range()
Função utilizada para retornar uma
lista de números,começando do zero
(por padrão) e incrementando em
uma unidade (por padrão) e parando
em um número especificado. Sua
sintaxe é: range(start, stop, step) –
sendo que start é opcional e incluso;
step é opcional e pode ser negativo;
e stop é obrigatório e não é incluso.
listaQualquer = range(5, 20, 3)
print(list(listaQualquer)) #retorna [5, 8, 11, 14, 17]
listaQualquer = range(4, 10)
print(list(listaQualquer)) #retorna [4, 5, 6, 7, 8, 9]
listaQualquer = range(6)
print(list(listaQualquer)) #retorna [0, 1, 2, 3, 4, 5]
Vamos resumir as características básicas de uma lista (list) em uma tabelinha que será
incrementada à medida que estudarmos os outros tópicos sobre coleções:
Critério List
Ordenação Ordenada
Modificação mutável
Duplicatas Permite duplicatas
Indexação Porinteiro
delimitador Entre colchetes[]
Tuplas
INCIDÊNCIA EMPROVA: baixa
Uma tupla (ousequência) é uma coleçãode valores ordenados,imutáveis e indexáveis que pode
conter valores duplicados e são delimitadas por parênteses. Vejamos um exemplo:
TuplaFrutas = ("maçã", "carambola", "banana")
print(TuplaFrutas) #Retornará ('maçã', 'carambola', 'banana')
Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em
uma única variável. Legal, mas e se eu quiser acessar uma fruta específica? Vejamos...
TuplaFrutas = ("maçã", "carambola", "banana")
print(TuplaFrutas[0]) #Retornará maçã
print(TuplaFrutas[1]) #Retornará carambola
print(TuplaFrutas[2]) #Retornará banana
print(TuplaFrutas[3]) #Retornará IndexError: list index out range
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
29
69
Note que a tupla é delimitada por parênteses, mas o índice sempre será representado entre
colchetes. Galera, tuplas são muito parecidas com listas, isto é, a forma de acessar é semelhante,
existem índices negativos, é possível acessar uma extensão de índices. No entanto, há uma
diferença fundamental: tuplas são imutáveis!Isso significa que – uma vez criada – você não poderá
mais modificar seus itens.
Diego, eu não posso modificar, mas eu posso inserir ou remover itens? Não, você não pode modificar
absolutamente nada! Caso seja necessário, a única alternativa seria convertê-la em lista:
TuplaFrutas = ("maçã", "carambola", "banana")
print(TuplaFrutas) #Retornará ('maçã', 'carambola', 'banana')
ListaFrutas = list(TuplaFrutas) #Converte a Tupla em uma Lista
ListaFrutas[1] = "abacate"
print(ListaFrutas) #Retornará ['maçã', 'abacate', 'banana']
Vejamos agora algumas funções (ou métodos) que podem ser utilizadas com tuplas (ou
sequências). Fiquem tranquilos, agora são apenas quatro:
FUNÇÃO DESCRIÇÃO EXEMPLO
len( )
Função utilizada para retornar
quantos itens uma tupla possui.
TuplaQualquer = (2020, "Flamengo", True)
print(len(TuplaQualquer)) #Retornará 3
count( )
Função utilizada para retornar a
quantidade de vezes que um valor
específico ocorre em uma tupla.
TuplaQualquer = (8, 6, 1, 9, 1, 9, 1, 6, 5, 1)
print(TuplaQualquer.count(2)) #Retornará 0
print(TuplaQualquer.count(6)) #Retornará 2
print(TuplaQualquer.count(1)) #Retornará 4
print(TuplaQualquer.count(9)) #Retornará 2
index( )
Função utilizada para buscar por um
valor específico e retornaro índice de
sua primeira ocorrência na tupla.
TuplaQualquer = (8, 6, 1, 9, 1, 9, 1, 6, 5, 1)
print(TuplaQualquer.index(5)) #Retornará 8
print(TuplaQualquer.index(6)) #Retornará 1
print(TuplaQualquer.index(1)) #Retornará 2
print(TuplaQualquer.index(9)) #Retornará 3
tuple( )
Função utilizada para criar uma nova
tupla.
TuplaQualquer = tuple(("Flamengo", True, "Bola", 5))
print(TuplaQualquer)
#Note que deve ter parênteses duplos
Vamos resumir as características básicas de uma tupla (tuple) em uma tabelinha que será
incrementada à medida que estudarmos os outros tópicos sobre coleções:
Critério List Tuple
Ordenação Ordenada Ordenada
Modificação mutável imutável
Duplicatas Permite duplicatas Permite duplicatas
Indexação Porinteiro Porinteiro
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
30
69
delimitador Entre colchetes[] Entre parênteses( )
Sets
INCIDÊNCIA EMPROVA: baixíssima
Um set (ou conjunto) é uma coleção de valores desordenados, mutáveis e não indexáveis que
não pode conter valores duplicados e são delimitadas por chaves. Vejamos um exemplo:
SetFrutas = {"maçã", "carambola", "banana"}
print(SetFrutas)
#Retornará uma sequência desses três valores em ordem aleatória
Apesar de termos declarado o conjunto acima como maçã, carambola e banana, não existe uma
ordem! Se eu executar várias vezes o comando print acima, poderíamos ter resultados
diferentes para cada execução. No caso acima, poderíamos ter uma das seis possibilidades
apresentadas abaixo. Como não há uma ordenação, não há como indexar os valores por nenhum
número inteiro. Entendido?
{"maçã", "carambola", "banana"} ou
{"maçã", "banana", "carambola"} ou
{"carambola", "maçã", "banana"} ou
{"carambola", "banana", "maçã"} ou
{"banana", "maçã", "carambola"} ou
{"banana", "carambola", "maçã"}
Nós não vamos nos estender nesse tipo de coleção, porque ela quase não cai em prova (tanto
que não encontrei nenhuma questão sobre ela). De todo modo, vejamos algumas funções:
FUNÇÃO DESCRIÇÃO EXEMPLO
len( )
Função utilizada para retornar
quantos itens um conjunto possui.
SetQualquer = {2020, "Flamengo", True}
print(len(SetQualquer)) #Retornará 3
add( )
Função utilizada para adicionar um
item a um conjunto.
SetQualquer = {2020, "Flamengo", True, 5}
SetQualquer.add("Bola")
print(SetQualquer)
#Retornará o set original com “Bola” dentro do conjunto
update( )
Função utilizada para adicionar
elementos específicos de um
conjunto ao final de outro conjunto.
SetQualquer1 = {"Bola", 5}
SetQualquer2 = {"Flamengo", True}
SetQualquer1.update(SetQualquer2)
print(SetQualquer1)
#Retornará a união dos dois conjuntos em alguma ordem
remove( )
Função utilizada para remover a
primeira ocorrência de um item
especificado em um conjunto.
SetQualquer = {2020, "Flamengo", True, "Bola", 5}
SetQualquer.remove(2020)
print(SetQualquer)
#Retornará o set original sem 2020 dentro do conjunto
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
31
69
clear( )
Função utilizada para esvaziar um
conjunto.
SetQualquer = {"Flamengo", True, "Bola", 5}
SetQualquer.clear()
print(SetQualquer)
#Retornará o set vazio {}
del( )
Função utilizada para remover um
conjunto (set) inteiro.
SetQualquer = {"Flamengo", True, "Bola", 5}
del SetQualquer
#Excluirá o set
Vamos resumir as características básicas de um conjunto (set) em uma tabelinha que será
incrementada à medida que estudarmos os outros tópicos sobre coleções:
Critério List Tuple Set
Ordenação Ordenada Ordenada Nãoordenada
Modificação Mutável Imutável mutável
Duplicatas Permite duplicatas Permite duplicatas Nãopermite duplicatas
Indexação Porinteiro Porinteiro Nãoindexada
delimitador Entre colchetes[] Entre parênteses( ) Entre chaves{ }
Dicionários
INCIDÊNCIA EMPROVA: baixa
Um dicionário é uma coleção de valores desordenados, mutáveis e indexáveis que pode não
conter valores duplicados e são delimitadas por chaves. Galera, como funciona um dicionário de
língua portuguesa? Você basicamente procura uma palavra e encontra seu significado. Aqui o
dicionário funciona de maneira semelhante, no entanto – em vez de utilizar uma estrutura de
palavra:significado – utiliza uma estrutura de chave:valor.
Essa é uma primeira diferença sobre as coleções dos tópicos anteriores – as chaves delimitam
um conjunto de chave:valor. Vamos ver um exemplo para ficar mais claro:
DicioQualquer = {
"marca": "Ford",
"modelo": "Fiesta",
"ano": 2015
}
print(DicioQualquer) #Retornará {'marca': 'Ford', 'modelo': 'Fiesta', 'ano': 2015}
Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em
uma única variável. Legal, mas se eu quiser acessar um valor específico? Vejamos...
DicioQualquer = {
"marca": "Ford",
"modelo": "Fiesta",
"ano": 2015
}
print(DicioQualquer["modelo"]) #Retornará Fiesta
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
32
69
Observem que eu passei como parâmetro uma chave e ele me retornou um valor. O acesso a esse
valor específico também poderia ser feito utilizando a função get():
print(DicioQualquer.get("modelo")) #Retornará Fiesta
E se eu quiser modificar um valor do meu dicionário, também é muito simples! Basta informar o
valor da chave e o nome valor a ser atribuído:
DicioQualquer = {
"marca": "Ford",
"modelo": "Fiesta",
"ano": 2015
}
DicioQualquer["modelo"] = "Ranger"
print(DicioQualquer) #Retornará {'marca': 'Ford', 'modelo': 'Ranger', 'ano': 2015}
E para adicionar um novo valor ou deletar um valor existente, Diego? Também é completamente
possível, porque lembrem-se que essa coleção é do tipo mutável:
DicioQualquer = {
"marca": "Ford",
"modelo": "Fiesta",
"ano": 2015
}
DicioQualquer["cor"] = "Prata"
print(DicioQualquer)
#Retornará 'marca': 'Ford', 'modelo': 'Fiesta', 'ano': 2015, 'cor': 'Prata'}
del DicioQualquer["ano"]
print(DicioQualquer)
#Retornará marca': 'Ford', 'modelo': 'Fiesta', 'cor': 'Prata'}
Por fim, é importante mencionar os itens são indexados por string e, não, por inteiros. Além
disso, ele não pode conter duplicatas nas chaves, mas pode conter duplicadas nos valores.
FUNÇÃO DESCRIÇÃO EXEMPLO
len( )
Função utilizada para retornar
quantos itens um dicionário possui.
DicioQualquer = {
"marca": "Ford",
"modelo": "Fiesta",
"ano": 2015
}
print(len(DicioQualquer) #Retornará 3
copy
Função utilizada para copiar um
dicionário para outro.
DicioQualquer = {
"marca": "Ford",
"modelo": "Fiesta",
"ano": 2015
}
DicioQualquer2 = DicioQualquer1.copy()
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
33
69
#Outra forma de implementar seria usando dict():
DicioQualquer2 = dict(DicioQualquer1)
Chegamos finalmente à versão final da nossa tabela comparativa entre tipos de coleções inserindo
dicionários (dictionary). Essa tabela será muito útil para vocês, então guardem-na com carinho!
Critério List Tuple Set Dictionary
Ordenação Ordenada Ordenada Nãoordenada Nãoordenada
Modificação Mutável Imutável Mutável mutável
Duplicatas Permite duplicatas Permite duplicatas Nãopermite duplicatas Nãopermite duplicatas
Indexação Porinteiro Porinteiro Nãoindexada Porstring
delimitador Entre colchetes[] Entre parênteses( ) Entre chaves{ } Entre chaves{ }
Controle de Fluxo
Galera, em geral as instruções de uma receita de bolo – como a mostrada no início da aula –
aparecem de forma vertical de cima para baixo. Vocês se lembram, não é? Em programas de
computador, ocorre da mesma forma! O programa começa na primeira instrução e desce uma de
cada vez até atingir eventualmente o seu fim. Até agora, nós mostramos poucas instruções, mas
um software pode possuir muitas linhas de código (Ex: Windows possui mais de 2 milhões).
Vocês se lembram que uma forma de representar algoritmos é por meio de um fluxograma? Pois é, um
fluxograma representa os possíveis fluxos oucaminhos que um programa pode tomar. Eu disse que
as instruções de um software são lidas verticalmente uma após a outra, mas isso não significa
que todas as instruções devem ser executadas na ordem apresentada. Por que? Por conta das
Estruturas de Controle de Fluxo!
Nós vamos estudar a seguir as principais estruturas de controle de fluxo: Estruturas de Decisão (If)
e Estruturas de Repetição (While e For). Vamos lá...
Estrutura de Decisão (If-Elif-Else)
INCIDÊNCIA EMPROVA: Altíssima
Também chamadas de Estruturas de Seleção ou Condição, elas permitem interferir na
sequência natural de instruções executadas dependendo de uma condição de teste. Nós vimos
que a execução de instruções em geral ocorre em uma sequência uma após a outra, porém – por
meio de condições – é possível mudar a sequência natural de execução. A estrutura de condição
mais simples em algoritmos é conhecida como If (Se) e é utilizada da seguinte forma:
if expressão-lógica:
bloco-de-instruções
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
34
69
A <expressão-lógica> é uma expressão/condição que retorna um valor verdadeiro ou falso e, caso o
resultado dessa expressão seja verdadeiro, será executado o bloco de comandos que está dentro
dessa estrutura; caso seja falso, a execução do programa ignora o bloco de comandos e continua na
linha seguinte à estrutura de condição. Uma condição falsa poderia ser: 10 > 20; e uma condição
verdadeira poderia ser 30 = 30.
O bloco-de-instruções é uma sequência de código que será executada somente quando o
resultado da expressão lógica for verdadeiro. Por fim, é preciso tomar cuidado com a indentação
(o recuo no começo da linha) para definir o escopo dessa instrução. Dito isso, vamos analisar o
código apresentado abaixo. Note que ele define duas variáveis (a e b) e – em seguida – apresenta
uma instrução if que avalia uma expressão lógica.
a = 20
b = 50
if b > a:
print("b é maior que a") #Retornará b é maior que a
Perceba que b é realmente maior que a, logo a expressão lógica é verdadeira. Se ela é verdadeira, o
comando na linha abaixo – que possui um recuo maior – será executado. E se não tiver recuo?
a = 20
b = 50
if b > a:
print("b é maior que a") #Retornará IndentationError: expected na indented block
Caso não haja esse recuo (indentação), o código retornará um erro porque é obrigatório que
haja um bloco de instruções indentado para executar a instrução. Dessa forma, podemos dizer
que a instrução se é como uma bifurcação na estrada. O caminho que você toma depende da
avaliação da expressão lógica (se é verdadeira ou falsa). Pronto, nós acabamos de aprender nossa
primeira declaração condicional. Só que ainda não acabou...
Há uma outra palavra-chave utilizada quando uma condição não foi satisfeita, mas eu gostaria de
fazer outro teste. Para tal, utiliza-se a palavra-chave elif. Como funciona, Diego? A sintaxe é...
if expressão-lógica1:
bloco-de-instruções1
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
35
69
elif expressão-lógica2:
bloco-de-instruções2
Vamos ver um exemplo semelhante ao apresentado anteriormente, mas agora o código testará
uma condição e, se ela não for verdadeira, ele testará outra condição:
a = 50
b = 50
if b > a:
print("b é maior que a")
elif a == b:
print("a e b são iguais") #Retornará a e b são iguais
No exemplo acima, analisa-se a primeira expressão lógica (linha 4): b > a. Essa expressão é
verdadeira ou falsa? É falsa, logo não se executa a instrução da linha 5. Em seguida, analisa-se a
segunda expressão lógica (linha 6): a == b. Essa expressão é verdadeira ou falsa? É verdadeira, logo
executa-se a instrução da linha 7 e imprime na tela a mensagem: a e b são iguais. Bacana! Estamos
aumentando nosso vocabulário. Agora vamos aprender mais uma palavra-chave: else.
if expressão-lógica1:
bloco-de-instruções1
elif expressão-lógica2:
bloco-de-instruções2
else:
bloco-de-instruções3
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
36
69
Para ficar mais claro, imagine o software de uma faculdade que calcula se um aluno qualquer foi
aprovado, reprovado ou se ficou de recuperação a partir de expressões lógicas:
if media < 5.0:
print("Aluno Reprovado")
elif media >= 7.0:
print("Aluno Aprovado")
else:
print("Aluno de Recuperação")
Vamos interpretar esse algoritmo? Suponha que um aluno qualquer tenha uma nota média de 5.1.
A primeira expressão lógica é falsa porque a média do aluno não é menor que 5.0 e a segunda
expressão lógica é falsa porque a média do aluno não é maior ou igual a 7.0, logo o terceiro bloco
de instruções será necessariamente executado porque se a média do aluno não é menor que 5.0 e
não é maior ou igual a 7.0, então a média dele é entre 5.0 e 6.9, portanto ele está de recuperação.
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
37
69
Nós vimos exemplos em que há apenas uma instrução dentro do bloco de cada expressão lógica,
mas você pode colocar quantas desejar. Caso tenha apenas uma instrução, pode escrever assim:
if media < 5.0: print("Aluno Reprovado")
elif media >= 7.0: print("Aluno Aprovado")
else: print("Aluno de Recuperação")
Lembrando também que você não é obrigado a usar o elif. Caso só haja duas opções, você pode
utilizar apenas if e else. Veja só o código abaixo:
if idade >= 18:
print("Maior de Idade")
else:
print("Menor de Idade")
Se você tiver apenas uma instrução para executar, uma para if e outra para else, poderá colocar
tudo na mesma linha conforme apresentado a seguir:
if idade >= 18: print("Maior de Idade")
else: print("Menor de Idade")
Por fim, é importante saber que é possível ter um if dentro de outro if (e assim por diante).
Quando isso ocorre, dizemos que temos um if aninhado ou encadeado.
if x > 10:
print("Número acima de 10!")
if x > 20:
print("E também acima de 20!")
if x > 30:
print("E também acima de 30!")
else:
print("Mas abaixo de 30!")
else:
print("Mas abaixo de 20!")
else:
print("Número abaixo de 10!")
Estrutura de Repetição (While)
INCIDÊNCIA EMPROVA: ALTA
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
38
69
Uma das principais características que consolidaram o sucesso na utilização dos computadores
para a resolução de problemas foi a sua capacidade de repetir o processamento de um conjunto
de operações para grandes quantidades de dados. Exemplos de conjuntos de tarefas que
repetimos diversas vezes dentro de uma situação específica podem ser observados invariavelmente
no nosso dia a dia.
As estruturas de repetição nos fornecem um modo de repetir instruções até que determinado
objetivo seja atingido, quando a repetição se encerra. Todas as estruturas de repetição têm em
comum o fato de haver uma condição de controle, expressa através de uma expressão lógica, que
é testada em cada ciclo para determinar se a repetição prossegue ou não. Em outras palavras, se
você manda o computador repetir algo, você tem que dizer quando ele deve parar!
Por exemplo: um sistema que vende ingressos para um show deve armazenar em alguma variável
a quantidade de ingressos disponíveis. A cada ingresso vendido, esse valor deve ser decrementado
e, quando o valor chegar a zero, a venda de ingressos deve ser interrompida uma vez que a carga
de ingressos acabou. Há infinitas utilidades e é uma estrutura extremamente comum em
qualquer algoritmo de qualquer linguagem de programação.
As estruturas de repetição são basicamente duas: while e for. A diferença básica é que a estrutura
while é iterada/repetida (em loop) baseada em uma expressão lógica (True ou False) e a estrutura
for é iterada/repetida (em loop) baseada em coleções (ou objetos multivalorados). Calma, tudo
ficará claro! A estrutura de repetição while avalia uma expressão lógica e só executa os comandos
do bloco de instruções se essa expressão for considerada verdadeira.
Após a execução dos comandos, a expressão lógica é novamente avaliada. Caso o resultado seja
falso, o algoritmo sai da estrutura de repetição (chamada de loop) e segue para a próxima linha:
while expressão-lógica:
bloco-de-instruções
Vamos imaginar um contexto em que um candidato precisa de 100 votos para ser eleito síndico
de um condomínio de apartamentos. Vejamos como funciona:
voto = 0
while voto < 100:
print("Votos Insuficientes")
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
39
69
voto = voto + 1
print("Habemus Síndico!")
#Imprimirá “Votos Insuficientes” 100 vezes (0 a 99) e, por fim, imprimirá “Habemus Síndico!”
Notem que euinicializo a variável voto com valor 0. Em seguida, há uma expressão lógica que avalia
se o valorarmazenado navariável é menorque 100.Como inicialmente essaexpressão é verdadeira,
executa-se o bloco de instruções imprimindo uma mensagem de “Votos Insuficientes”e
incrementando em uma unidade o valor da variável voto. Isso se repete diversas vezes até um
momento em que a variável armazenará o valor 99. O que acontece nesse momento?
Quando voto = 99, analisamos: 99<100? Sim, isso é verdadeiro! Imprime a mensagem de “Votos
Insuficientes” e incrementamos a variável voto em uma unidade, logo voto = 100. Voltamos no loop
e analisamos: 100>100? Não, isso é falso! Se é falso, imprime-se a mensagem “Habemus Síndico!”,
saímos desse bloco de instruções e prosseguimos com o nosso código normalmente. A variável
dentro do bloco de instruções sendo incrementada/decrementada é chamada de contador.
Se não houver um contador ou alguma outra forma de escape do nosso bloco de instruções, o
algoritmo ficará em repetição para sempre – isso é chamado de loop infinito. Vejam no exemplo
apresentado abaixo que – como não há um escape do bloco de instrução – não existe uma condição
de saída da estrutura de repetição. Logo, esse bloco de instruções continuará sendo repetido
indefinidamente causando problemas de memória ao computador.
voto = 0
while voto < 100:
print("Eu nunca mais vou sair daqui! MUA-HA-HA-HA-HA")
#Esse código imprimirá infinitamente “Eu nunca mais vou sair daqui! MUA-HA-HA-HA-HA”
Galera, existe uma outra forma de escapar do loop. Sabe como? Utilizando a declaração break! Essa
declaração permite interromper um loop mesmo que a expressão lógica ainda seja verdadeira:
contador = 0;
while contador < 6:
print(contador)
if contador == 3:
break
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
40
69
contador = contador + 1
#Esse código imprimirá 0 1 2 3
Note que o while será executado incrementando o contador normalmente. No entanto, se em
algum momento o contador for 3, ele interrompe o loop (break). Da mesma forma que existe um
comando específico para parar, há também um comando específico para continuar! Como assim?
Por vezes, você não quer que o restante do bloco de instruções seja executado dada determinada
condição. Vamos ver um exemplo para ficar mais claro:
contador = 0;
while contador < 6:
contador = contador + 1
if contador == 3:
continue
print(contador)
#Esse código imprimirá 1 2 4 5 6
Notem que, quando contator = 3, o continue esquece tudo que há abaixo dele dentro do bloco de
instrução e retorna para a expressão lógica do while, logo não imprime o número 3.
Estrutura de Repetição (For)
INCIDÊNCIA EMPROVA: média
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
41
69
Na estrutura de repetição while, a iteração (loop) era realizada baseado em uma expressão lógica,
que poderia ser verdadeira ou falsa. A estrutura de repetição for funciona de maneira um pouco
diferente – a iteração é realizada baseado em uma coleção (ou objeto iterável). Logo, a iteração é
realizada sobre itens de listas, tuplas, sets, dicionários ou – até mesmo – strings. Vamos ver a
sua sintaxe para ficar um pouco mais claro...
for variável-de-controle in variavel-colecao
bloco-de-instruções
Percebam que – em contraste com a estrutura while – não é necessário declarar uma variável de
controle antecipadamente porque a própria estrutura necessita de uma variável de controle.
listaFrutas = ["maçã", "carambola", "banana"]
for x in listaFrutas:
print(x) #Imprimirá maçã carambola banana
Essa estrutura percorre todos os elementos da lista. O interessante é que isso vale para outras
coleções como tuplas e conjuntos – vejam alguns exemplos:
TuplaFrutas = ("maçã", "carambola", "banana")
for x in TuplaFrutas:
print(x) #Imprimirá maçã carambola banana
SetFrutas = {"maçã", "carambola", "banana"}
for x in SetFrutas:
print(x) #Imprimirá maçã carambola banana
E o dicionário, Diego? Também funciona! No entanto, vocês devem se lembrar que o dicionário
apresenta um conjunto de chave-valor, então você pode escolher apresentar a chave ouo valor:
DicioFrutas = {"fruta1": "maçã", "fruta2": "carambola", "fruta3": "banana"}
for x in DicioFrutas:
print(x) #Imprimirá fruta1 fruta2 fruta 3
DicioFrutas = {"fruta1": "maçã", "fruta2": "carambola", "fruta3": "banana"}
for x in DicioFrutas:
print(DicioFrutas[x]) #Imprimirá maçã carambola banana
Por fim, essa estrutura de repetição também é capaz de iterar sobre uma string. Ora, a string é um
conjunto de caracteres, logo é possível iterar sobre cada caractere. Vejam só:
for x in "Estratégia Concursos":
print(x) #Imprimirá E s t r a t é g i a C o n c u r s o s
Note que ele imprimirá letra por letra! Galera, não vou entrar em detalhes porque nós já vimos isso
no tópico anterior, mas essa estrutura de repetição também permite utilizar break e continue. É
importante mencionar também que essa estrutura também é utilizada frequentemente com a
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
42
69
função range( ). Vocês se lembram o que essa função faz? Ela retorna uma sequência de números,
começando do 0 (porpadrão), incrementando por 1 (porpadrão) e termina no número especificado.
Ela pode ser utilizada em conjunto com a função for para iterar sobre um bloco de instruções
por um número específico de vezes. Vamos ver como funciona...
for x in range(6):
print(x) #Imprimirá 0 1 2 3 4 5
Lembrem-se também que essa função pode ser um pouco mais complexa quando possui todos
os seus três parâmetros: start, stop e step. Vejamos...
for x in range(2, 20, 3):
print(x) #Imprimirá 2 5 8 11 14 17
Note que o for itera sobre o conjunto de valores que se inicia em 2 (incluso) até 20 (não incluso),
pulando de três em três unidades. Fechado?
Arquivos
INCIDÊNCIA EMPROVA: baixíssima
Pessoal, nós vimos diversos exemplos em nossa aula de manipulação de dados. No entanto, os
dados ou foram inseridos diretamente no código-fonte ou foram inseridos pelo usuário. Ocorre que
há outras maneiras de manipular dados no Python! Sabe qual? Por meio de arquivos! É muito útil,
por exemplo, saber manipular um arquivo de planilha, um arquivo de imagem, um arquivo de áudio,
um arquivo de texto, entre outros.
Em nossa aula, vamos nos focar no principal formato de manipulação de arquivos, que são aqueles
do tipo texto simples (conjunto de caracteres). Em Python, devemos abrir/criar (open) arquivos
antes de usá-los e fechar (close) os arquivos depois que tivermos terminado de utilizá-los – sendo
que depois de aberto um arquivo passa a ser considerado um objeto Python de maneira semelhante
a outros dados (chamado de objeto file). Vamos começar aprendendo a abrir um arquivo:
Sintaxe: open(NomeDoArquivo, Modo) #Permite abrir/criar um arquivo
Observação: NomeDoArquivo é uma string que indica o nome/caminho do arquivo no sistema de
arquivos do sistema operacional; Modo indica a forma de abertura/uso do arquivo (é opcional).
Vamos detalhar um pouco mais essa sintaxe. O comando open permite abrir ou criar um arquivo.
Como assim, Diego? Isso dependerá basicamente do modo de uso, isto é, de parâmetros que
indicam finalidades e características de manipulação do arquivo. Existem alguns modos de uso
apresentados na tabela seguinte para indicar a leitura, escrita, adição e criação de arquivos, mas –
antes se prosseguir – nós precisamos entender o conceito de truncagem. O que é isso, Diego?
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
43
69
Quando dizemos que um arquivo foi truncado, significa que todo seuconteúdo foi apagado durante
a abertura do arquivo. Em outras palavras, truncar é basicamente sobrescrever dados...
MODO
DE USO
significado DESCRIÇÃO
‘r’ READ
Esse parâmetro permite abrir umarquivo para leitura a partir de sua posição inicial semque
o arquivo seja truncado e retorna um erro caso o arquivo não exista (é o modo default).
‘w’ WRITE
Esse parâmetro permite abrir um arquivo para escrita a partir de sua posição inicial após o
arquivo ser truncado e, caso o arquivo não exista, ele é criado.
‘a’ APPEND
Esse parâmetro permite abrir um arquivo para escrever/adicionar dados a partir de sua
posição final sem que o arquivo seja truncado e, caso o arquivo não exista, ele é criado.
‘x’ CREATE
Esse parâmetro permite criar um arquivo especificado e, caso o arquivo não exista, ele
retorna um erro.
Acabou, professor? Não! Há ainda mais três modos de uso especiais que apresentaremos a seguir
que adicionam funcionalidades (e, por isso, acompanham o sinal de adição). Vejamos...
MODO
DE USO
significado DESCRIÇÃO
‘r+’ READ/write
Esse parâmetro permite abrir um arquivo para leitura e escrita de dados a partir de sua
posição inicial sem que o arquivo seja truncado e retorna um erro caso o arquivo não exista.
‘a+’ APPEND/read
Esse parâmetro permite abrir umarquivo para escrever/adicionar e ler dados a partirde sua
posição final sem que o arquivo seja truncado e, caso o arquivo não exista, ele é criado.
‘w+’ WRITE/read
Esse parâmetro permite abrir um arquivo para escrita e leitura de dados a partir de sua
posição inicial após o arquivo ser truncado e, caso o arquivo não exista, ele é criado.
Eu montei uma tabelinha para facilitar o entendimento de tudo que vimos na tabelinha seguinte
em relação à criação, leitura, escrita, truncagem e se é a partir do início ou fim. Vejamos...
resumo ‘x’ ‘r’ ‘r+’ ‘w’ ‘w+’ ‘a’ ‘a+’
Criar x x x x x
Ler x x x x
Escrever x x x x x
truncar x x
A partirdoinício x x x x
A partirdofim x x
Acabou, Diego? Ainda não... é possível também especificar se o arquivo deve ser tratado como texto
ou binário conforme é apresentado na tabela seguinte:
MODO
DE USO
significado DESCRIÇÃO
Diego Carvalho, Raphael Henrique Lacerda
Aula 01
TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital)
www.estrategiaconcursos.com.br
1036962
12225328757 - Elton Barbosa
44
69
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf
curso-216933-aula-01-7fe0-simplificado.pdf

Mais conteúdo relacionado

Semelhante a curso-216933-aula-01-7fe0-simplificado.pdf

Semelhante a curso-216933-aula-01-7fe0-simplificado.pdf (20)

Linguagemvisualg20 1231617059100335-1
Linguagemvisualg20 1231617059100335-1Linguagemvisualg20 1231617059100335-1
Linguagemvisualg20 1231617059100335-1
 
Visualg introdução aos algoritmos
Visualg introdução aos algoritmosVisualg introdução aos algoritmos
Visualg introdução aos algoritmos
 
C a linguagem de programação
C   a linguagem de programaçãoC   a linguagem de programação
C a linguagem de programação
 
Apostila visualg (1)
Apostila visualg (1)Apostila visualg (1)
Apostila visualg (1)
 
Aula 01
Aula 01Aula 01
Aula 01
 
Algoritmos visualg
Algoritmos visualgAlgoritmos visualg
Algoritmos visualg
 
Visu alg ref (2)
Visu alg ref (2)Visu alg ref (2)
Visu alg ref (2)
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
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
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
Ebook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesEbook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantes
 
Algorítimos
AlgorítimosAlgorítimos
Algorítimos
 
VisualAlg - Criando algoritmos
VisualAlg - Criando algoritmosVisualAlg - Criando algoritmos
VisualAlg - Criando algoritmos
 
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdfTREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
TREINAMENTO EM LOGICA DE PROGRAMAÇÃO (Sandra Rita) (z-lib.org).pdf
 
PDF.pdf
PDF.pdfPDF.pdf
PDF.pdf
 
C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aula
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
Livro aed capitulos-1-2-3-introdpascal
Livro aed capitulos-1-2-3-introdpascalLivro aed capitulos-1-2-3-introdpascal
Livro aed capitulos-1-2-3-introdpascal
 

Último

Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxSilvana Silva
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeitotatianehilda
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralAntonioVieira539017
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPabloGabrielKdabra
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptRogrioGonalves41
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Cabiamar
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxLuciana Luciana
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 

Último (20)

Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 

curso-216933-aula-01-7fe0-simplificado.pdf

  • 1. Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) Autor: Diego Carvalho, Raphael Henrique Lacerda 05 de Outubro de 2022 12225328757 - Elton Barbosa
  • 2. Diego Carvalho, Raphael Henrique Lacerda Aula 01 Índice .............................................................................................................................................................................................. 1) Programação - Python 3 .............................................................................................................................................................................................. 2) Questões Comentadas - Programação - Python - Multibancas 50 .............................................................................................................................................................................................. 3) Lista de Questões - Programação - Python - Multibancas 62 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 2 69
  • 3. APRESENTAÇÃO Seus lindos, vamos iniciar a nossa aula de Python. Eu sei que muitas pessoas ficam preocupadíssimas achando que precisam aprender a programar para resolver questões de prova. Galera, não é necessário... vocês vão ver que é totalmente possível responder questões de programação sem nunca ter desenvolvido um software na vida. Fiquem calmos... venham comigo que vocês vão adorar descobrir como funciona um programa de computador ;) PROFESSORDIEGO CARVALHO - www.instagram.com/professordiegocarvalho Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 3 69
  • 4. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 4 69
  • 5. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 5 69
  • 6. LÓGICA DE PROGRAMAÇÃO Conceitos Básicos INCIDÊNCIA EMPROVA: baixíssima O Edital traz um tópico sobre Python, mas eu insiro dois pequenos tópicos no início da aula sobre lógica de programação para que vocês entendam os fundamentos que norteiam o estudo de qualquer linguagem de programação. Para alunos que já tiveram alguma experiência prévia com programação ou que não encontram dificuldades no assunto, eu sugiro pular esses três primeiros tópicos e irem diretamente para o assunto de Python. Galera, vamos começar falando sobre Lógica de Programação! Em primeiro lugar, por que nós chamamos de lógica? Porque nós vamos utilizar princípios lógicos para resolver geralmente, mas não exclusivamente, problemas computacionais. Como assim, Diego? É necessário utilizar um encadeamento de raciocínios coerentes para alcançar um determinado objetivo. Nós podemos descrever esses raciocínios como uma sequência de instruções ou passos. Professor, e o que seria uma instrução? É um conjunto de regras ou normas simples e bem definidas para a realização ou emprego de algo, indicando ao computador uma ação ou função elementar a ser executada. Galera, um computador não pensa, ele é burro – ele somente recebe ordens e as executa! O programador de computador – sim – é o cara inteligente que dá as ordens. Então, vejam só a linha de raciocínio... Um computador é excelente para realizar cálculos e processamentos, mas ele não consegue pensar sozinho. Já o programador é ótimo em pensar sozinho sobre como resolver problemas, mas ele não tem capacidade de fazer bilhões de cálculos e processamentos. Logo, eles se juntam de forma que o programador possa pensar na forma de resolver um problema e criar um conjunto de instruções para que o computador apenas as execute. Sabe qual é o nome dado a um conjunto de instruções? Algoritmo! Programadores são especialistas em construir algoritmos. Formalmente podemos definir um algoritmo como um conjunto predeterminado e bem definido de passos destinados à solução de um problema, com um número finito de etapas. Professor, você pode dar um exemplo? Claro! O exemplo mais comum da bibliografia é uma receita de bolo. Qual é o problema que desejamos resolver? Nós queremos fazer um bolo! Observem que para solucionar nosso problema – fazer um bolo –, é necessário seguir uma sequência de passos finitos e predeterminados. Galera, no fim das contas um software é apenas a representação de um algoritmo. Claro que é um algoritmo bastante complexo que exige um conjunto de recursos e ferramentas computacionais, mas – no fim das contas – é apenas um algoritmo. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 6 69
  • 7. Representações de Algoritmos INCIDÊNCIA EMPROVA: baixíssima Todos os programas de um computador ou dispositivos são representações de algoritmos! Inclusive o Candy Crush no meu celular? Sim! O Uber, Waze e Spotify também? Eles também! Se você pudesse ver como são internamente cada programa, você perceberia que todos são basicamente um conjunto de instruções. Dito isso, vamos ver a seguir as maneiras possíveis de se representar um algoritmo. Venham comigo... Linguagem Natural Também conhecida como Descrição Narrativa, trata-se da maneira como expressamos nosso raciocínio e trocamos informações. Como é a expressão da cultura de uma sociedade, desenvolvida através das gerações e em diferentes situações, raramente constitui um sistema de regras rígidas e estruturadas que possa ser implementada numa máquina ou que possa ser transcrita logicamente. Além da linguagem falada, fazem parte da nossa comunicação gestos e posturas, que não podem ser diretamente adaptados para compreensão de uma máquina. Ademais, toda a comunicação eficiente pressupõe um conhecimento prévio comum entre os interlocutores, por exemplo: a mesma língua, a mesma bagagem cultura, etc. Ao contrário dos seres humanos, as máquinas são projetadas para executar tarefas bem determinadas a partir de determinadas instruções. Um computador não é por si só uma máquina inteligente – no sentido de que não pode aprender com a própria experiência para melhorar seu comportamento futuro. Ao contrário, um computador é somente capaz de realizar estritamente as tarefas que lhe forem delegadas e que façam parte do conjunto daquelas ações que ele pode executar. Neste sentido, é necessário compreender que tipo de instruções podem ser executadas pelos computadores. Por que? Para que possamos programá-los – instruí-los com a sequência de ações necessárias para resolver um determinado problema – de modo que realizem a tarefa do modo desejado. Em suma: basta que eu escreva um conjunto de passos em qualquer língua que o meu computador realiza a tarefa que eu quiser? Não, isso é uma descrição narrativa que utiliza a linguagem natural para especificar os passos para a realização das tarefas – são ambíguas e não estruturadas. Linguagem de Máquina Além do fato de o computador necessitar que lhe instruam com ações bem específicas, estas ações devem ser passadas para o computador numa linguagem que ele possa entendê-las, chamada linguagem de máquina. Esta linguagem é composta somente por números, representados de forma binária (0 e 1), que – sob o ponto de vista do computador – representam as operações e os operandos que serão usados no processamento do programa. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 7 69
  • 8. Para um ser humano, a linguagem de máquina é extremamente difícil de se compreender. Querem um exemplo? A saudação “Olá, Estratégia Concursos” em linguagem de máquina seria: 01001111011011001110000100101100010001010111001101 11010001110010011000010111010011101001011001110110 10010110000101000011011011110110111001100011011101 010111001001110011011011110111001100100001 Vocês já imaginaram alguém programando na linguagem de máquina? Seria inviável! Existe, portanto, uma linguagem representada por comandos, mas que reproduz as tarefas que serão executadas dentro do computador, chamada Linguagem de Montagem (Assembly). No entanto, mesmo a linguagem de montagem é difícil de programar – além de outros problemas como a especificidade do processador. Vejam como seria a mesma saudação em Assembly: 4F6CE12C457374726174E9676961436F6E637572736F7321 Viram que já melhorou? Está melhor e já existem algumas letras, no entanto ainda seria muito complicado para um ser humano programar utilizando essa linguagem. Vamos seguir... Linguagem de Programação Para facilitar a tarefa de programar um computador, foram criadas várias linguagens de programação. Estas linguagens são uma maneira de tentar escrever as tarefas que o computador vai realizar de maneira mais parecida com a linguagem natural. Embora ainda seja muitas vezes complexo em comparação com a linguagem natural, um programa escrito em uma linguagem de programação é muito mais fácil de ser implementado, compreendido e modificado. As linguagens de programação são um meio termo entre a linguagem de máquina e a linguagem natural. As linguagens mais parecidas com a linguagem de máquina são classificadas como linguagens de baixo nível. Já as linguagens mais parecidas com a linguagem natural são classificadas como linguagens de alto nível. Como um computador não entende diretamente linguagens de programação, ela deve ser traduzida em código de máquina antes de ser executada. Esse processo é chamado de tradução e é responsável por converter os comandos da linguagem de programação nas instruções em linguagem de máquina, que o computador é capaz de processar! Em suma: as linguagens de programação surgem – portanto – como uma solução para abstrair a comunicação entre seres humanos e computadores de modo que o computador nos entenda e nós os entendamos. A mesma saudação em uma linguagem de programação seria: Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 8 69
  • 9. Nesse caso, a linguagem de programação utilizada foi a linguagem Python, mas existem centenas de outras. Assim como seres humanos se comunicam por meio de diversas línguas (Exemplo: português, inglês, francês, japonês, dinamarquês, entre outras), as máquinas também podem se comunicar por meio de diversas linguagens de programação (Exemplo: Java, PHP, C++, Python, Ruby, entre outras). Bem, acho que todo mundo já ouviu falar alguma vez na vida em Código-Fonte. Se você não sabe o que é um código-fonte, eu tenho uma tarefa para você executar agora: abra algum navegador web (Ex: Google Chrome, Mozilla Firefox ou Microsoft Edge), acesse qualquer site que vocês queiram e pressionem a Tecla F12. Pronto, vocês verão o código-fonte por trás do site bonitinho que você está vendo... Um código-fonte é umaversão do software da formaem que ele foi originalmente escrito –digitado em um computador – por um programador humano em texto puro (caracteres alfanuméricos humanamente legíveis). Todo software ou site possui um código-fonte, que é um conjunto de palavras organizadas de acordo com regras específicas. Essas palavras que formam o algoritmo são escritas – em geral – utilizando linguagens de programação. Uma vantagem interessante da linguagem de programação em relação à linguagem de máquina é que um programa escrito em linguagem de máquina – como contém instruções escritas para um processador específico – só poderá ser utilizado naquele processador ou em similares. Em contrapartida, uma linguagem de programação, como contém somente instruções abstratas do que fazer, pode ser executado em qualquer processador ou máquina. Pseudocódigo O pseudocódigo é uma linguagem intermediária entre a linguagem natural e a linguagem de programação. Ela utiliza um conjunto restrito de palavras-chave, em geral na língua nativa do programador, que tem equivalentes nas linguagens de programação. Além disso, o pseudocódigo não requer a rigidez sintática necessária numa linguagem de programação, permitindo que um aprendiz se atenha à lógica do algoritmo e, não, ao formalismo da sua representação. À medida que se obtém mais familiaridade com os algoritmos, o pseudocódigo pode ser traduzido para uma linguagem de programação. Por essa razão, ele é considerado um excelente instrumento pedagógico para ensinar linguagens de programação. Em suma, um pseudocódigo é uma representação abstrata de um algoritmo utilizando uma linguagem simples sem necessidade de conhecer a sintaxe correta de nenhuma linguagem de programação. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 9 69
  • 10. Pode-se dizer também que ele é uma simulação de uma linguagem de programação real, mas que –naverdade – é uma linguagem de programação “de mentirinha”.Logo,ela não pode ser utilizada para criar softwares de verdade, mas são excelentes para ajudar a entender a lógica. Um tipo de pseudocódigo brasileiro é o Portugol ou Português Estruturado. O que é isso, Diegão? Cara, é uma pseudolinguagem utilizada para ensinar algoritmos em português. Sim, em português! Porque vocês perceberão que a imensa maioria das linguagens de programação do mercado utilizam como base a língua inglesa. Professor, esse português estruturado é moleza de entender? Galera, embora ele seja uma linguagem simplificada, ele possui todos os elementos básicos necessários para construir um algoritmo por meio de uma estrutura semelhante à de uma linguagem de programação de computadores. Dessa forma, resolver problemas com português estruturado pode ser uma tarefa tão complexa quanto a de escrever um programa em uma linguagem de programação qualquer, porém utilizando uma linguagem mais simples! Bacana? A imagem anterior é um exemplo de português estruturado. Comparem com o exemplo da linguagem de programação e vocês notarão que a diferença está na língua utilizada, mas continua sendo um algoritmo. Fluxograma Além do português estruturado, é possível representar um algoritmo também por meio de um Fluxograma! O que é isso, professor? É uma espécie de diagrama utilizado para documentar processos, ajudando o leitor a visualizá-los, compreendê-los mais facilmente e encontrar falhas ou problemas de eficiência, como mostra a imagem abaixo. Nada como usar imagens – agora vai ficar beeeeem mais fácil de entender. Vamos ver um exemplo... O que mostra o diagrama anterior? Ele mostraum algoritmo – conjunto de instruções – para comprar um curso de informática. Você acessa o site do Estratégia Concursos, depois procura por cursos do Prof. Diego Carvalho, baixa e acessa a aula demonstrativa, lê e decide se gostou ou não! Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 10 69
  • 11. Gostou? Compra para estudar! Não gostou? Compra também para ajudar! Brincadeira, pessoal! Com um fundo de verdade! Mas é brincadeira (mas é verdade...). Bem, nós vimos então que podemos representar algoritmos por meio de Descrições Narrativas, Linguagens de Programação, Pseudocódigos ou Fluxogramas! Em geral, os fluxogramas são mais utilizados para leigos; pseudocódigo para usuários um pouquinho mais avançados; e linguagens de programação para os usuários avançados. Agora que já vimos diversas representações de algoritmos, vamos falar de conceitos mais específicos e avançados. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 11 69
  • 12. NOÇÕES DE PYTHON Conceitos Básicos INCIDÊNCIA EMPROVA: ALTA Antes de iniciar a aula, é importante mencionar que vários exemplos dessa aula foram retirados ou inspirados em exemplos do W3Tutorials (www.w3schools.com/python). Não fizemos isso porque somos preguiçosos, mas por dois motivos: (1) os exemplos são excelentes; (2) essa é umadas fontes de inspiração das bancas. Além disso, eu sugiro que vocês tenham sempre aberta uma janela com um interpretador online para que vocês possam testar o que veremos. Recomendo esse: https://www.programiz.com/python-programming/online-compiler/ BASTAESCREVER OCÓDIGONA ESQUERDA,CLICAR EM RUNE VISUALIZAR ORESULTADO NADIREITA O que é Python? Python é uma linguagem de programação de alto nível, interpretada, multiparadigma e case-sensitive sendo bastante utilizada para desenvolvimento web, criação de fluxos de trabalho, conexão com bancos de dados, resolução de problemas matemáticos, prototipação de software, entre outros. Eu sei, eu sei que você tomou aquele susto, mas relaxa que nós vamos entender cada um desses conceitos. Não é tão difícil quanto parece... PrincipaisCARACTERÍSTICAS DESCRIÇÃO ALTO NÍVEL Trata-se de uma linguagem de alto nível porque é uma linguagem com nível de abstração bastante elevado, bem longe do código de máquina e mais próximo da linguagem humana. Em outras palavras, o Python está muito mais próximo à forma humana de pensar/escrever do que dos comandos entendidos por um processador. INTERPRETADA Trata-se de uma linguagem interpretada porque seu código-fonte é executado linha a linha por um interpretador (software que traduz uma linguagem em outra) e depois pelo sistema operacional, isto é, seu código -fonte não precisa ser totalmente transformado em código de máquina para somente depois ser executado1 . MULTIPARADIGMA Trata-se de uma linguagem multiparadigma porque suporta mais de um paradigma de programação. No caso, eles são: imperativo, procedural, funcional e orientado a objetos. Paradigmas são formas diferentes de resolver problemas – alguns utilizam funções, outros utilizam objetos, outros procedimentos e assim por diante. 1 Isso significa que o código-fonte pode ser executado linha por linha em tempo real à medida que sendo traduzida pelo interpretador. Há outras linguagens que são compiladas, isto é, primeiro traduz todo o programa e só depois pode ser executada. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 12 69
  • 13. CASE SENSITIVE Trata-se de uma linguagem case-sensitive, isto é, capaz de diferenciar maiúsculas e minúsculas. Em outras palavras, isso significa que as variáveis nome, Nome e NOME são diferentes entre si, uma vez que possuem diferenças de caixa em sua grafia. Acabou? Não acabou! Python é uma linguagem multiplataforma, podendo ser utilizada no Windows, Linux, MacOS, etc. Além disso, ele é fácil de aprender e possui uma linguagem simples extremamente semelhante com o inglês comum. Pode-se afirmar também que é uma linguagem menos verbosa, isto é, sua sintaxe permite escrever softwares com menos palavras e linhas que outras linguagens semelhantes. Acabou? Ainda não... Python é uma linguagem de tipagem forte e dinâmica. Como é, Diego? Linguagens de programação possuem um conjunto de regras sobre como tratar tipos de dados, sendo que a tipagem de uma variável pode ser estática/dinâmica ou fraca/forte. Linguagens com tipagem estática não permitem alteração de tipo de variável durante a execução do código-fonte; já linguagens com tipagem dinâmica permitem essa alteração. No código abaixo, nós declaramos uma variável com nome de var1 e a atribuímos o valor ‘Diego’, logo a linguagem já infere que se trata de uma variável do tipo string (conjunto de caracteres)2. Em seguida, nós atribuímos o valor 2020 (que é do tipo int) a essa mesma variável e não ocorre nenhum erro. Ela permite que a variável var1 tenha seu tipo modificado de string para int (inteiros). Se uma linguagem permite esse tipo de alteração durante a execução, trata-se de uma tipagem dinâmica. var1 = ‘Diego’ var1 = 2020 Linguagens com tipagem forte não permitem realizar algumas operações com variáveis de tipos diferentes sem conversão; já linguagens com tipagem fraca permitem realizar esse tipo de operação. No código abaixo, declaramos uma variável com nome de var2 e a atribuímos o valor ‘20’, logo a linguagem já infere que se trata de uma variável do tipo string. Ué, Diego? Como assim? Galera, tudo que vier entre aspas é considerado uma string (até mesmo números). var2 = ‘20’ print(10 + var2) Na linha seguinte, há um comando (print) para imprimir na tela a soma de 10 com var2 – sendo que 10 é do tipo int e var2 é do tipo string. Isso resultará em um erro porque o Python não permite realizar uma soma entre variáveis string e int – seria necessário fazer uma conversão antes de realizar a operação desejada. Linguagens de programação de tipagem fraca permitem fazer esse tipo de operação sem precisar fazer uma conversão prévia de tipos. 2 Essa inferência é conhecida como Duck Typing (Tipagem de Pato). Esse nome vem da expressão: “Se anda como pato, nada como um pato e faz quack como um pato, então provavelmente é um pato”. Em outras palavras, isso significa que o tipo de uma variável é inferido pelo interpretador em tempo de execução pelo valor que foi atribuído a ela. Se eu atribuo um valor do tipo string, significa que a variável é do tipo string; se eu atribuo um valor do tipo inteiro, significa que a variável é do tipo inteiro; e assim por diante. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 13 69
  • 14. Python tem tipagem forte, logo teríamos que fazer uma conversão explícita transformando var2 em um inteiro antes de imprimir o valor em tela. Se ela tivesse tipagem fraca, faria essa conversão implicitamente, sem a necessidade de o programador indicar que deseja fazer uma conversão. Enfim, Python é uma linguagem de tipagem forte e dinâmica, porque não possui conversão implícita de tipos e porque permite alterar o tipo de uma variável durante a execução do código. Por fim, essa linguagem de programação apresenta código-fonte agrupado por indentação. O que diabos é isso, professor? Indentar é o recuo do texto em relação a sua margem! Em outras palavras, se antes de escrevermos uma instrução, utilizarmos quatro espaçamentos da margem esquerda até a instrução propriamente dita, podemos dizer que a indentação utilizada possui quatro espaços. Esse termo vem do inglês indentation e é bastante comum em linguagens de programação. Algumas linguagens utilizam marcadores textuais para identificar e delimitar blocos de código, como chaves ({ }) ou palavras-chave (begin/end). O Python não utiliza nenhum marcador textual para isso – ele utiliza apenas a profundidade da indentação. Dessa forma, códigos que estiverem rente a margem esquerda farão parte do primeiro nível hierárquico; os que estiverem a quatro espaços da margem esquerda estarão no segundo nível hierárquico; e assim por diante. Todos os blocos são delimitados pela profundidade da indentação e, por conta disso, sua organização é vital para o programa escrito nessa linguagem. A sua má utilização acarretará à não execução ou no mal funcionamento do software. Assim, se você criar um while e quiser colocar 4 comandos dentro dele, terá que colocar todos com uma indentação de alguns espaços. Quantos espaços? Quantos você quiser – desde que seja a mesma quantidade no bloco. Veja o exemplo: No código da esquerda, a linha 2 cria um loop de repetição em que as linhas 3 a 6 serão repetidas enquanto i < 3. Sabemos disso porque todas essas linhas estão com indentação interna ao comando while. Por sua vez, a linha 5 está em um bloco pertencente ao if da linha 4, pois está quatro espaços para dentro do if. Dessa forma, a indentação (ou endentação) em Python é estrutural e não apenas um elemento de organização visual, tanto que o código da esquerda é diferente. Outras CARACTERÍSTICAS Python permite utilizar ponto-e-vírgula (;) para delimitar comandos, mas de forma opcional – assim como em outras linguagens como JavaScript e Typescript. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 14 69 ==fd2a2==
  • 15. Python é distribuída sob uma licença própria (compatível com a GPL), que permite a distribuição – comercial ou não – tanto da linguagem quanto de aplicações desenvolvidas nela, em formato binário ou código fonte, bastando cumprir a exigência de manter o aviso de copyright. Python permite que programas sejam compilados para um formato portável chamado de bytecode. Essa característica faz com que programas escritos nessa linguagem com uma biblioteca padrão sejam executadas da mesma forma em diversos sistemas operacionais que possuam um software interpretador de Python. Python possui uma interface com muitas bibliotecas e sistemas de janela, sendo extensível em C/C++. Além disso, pode ser utilizada como linguagem de extensão para aplicações que necessitam de uma interface programável (muito comum em aplicativos, jogos, processamento de textos, dados científicos e motores de busca). Python possui funcionalidades para expressões regulares; sockets; threads; data/tempo; analisadores XML; analisadores de arquivos de configuração; manipulação de arquivos e diretórios; persistência de dados; unidades de testes; bibliotecas clientes para os protocolos HTTP, FTP, IMAP, SMTP e NNTP. Python suporta o paradigma orientado a objetos com todos os seus componentes, tais como herança (simples ou múltipla), polimorfismo, sobrescrita, encapsulamento, abstração, reflexão, introspecção, etc! Não é necessário entender o que isso significa exatamente, apenas saber que ele suporta e que tudo em Python é um objeto3 . Galera, apenas para finalizar é importante mencionar que houve algumas mudanças introduzidas na virada da versão do Python de 2.x para o Python 3.x. Vocês podem acabar fazendo questões de provas antigas e ficarem um pouco confusos, por isso estou fazendo essa ressalva! Em termos de concurso, acredito que vale mencionar apenas uma mudança: o print mudou de instrução para função. O que isso significa na prática? Significa apenas que agora precisa de parênteses: print 'Olá Mundo' # até versão 2.7 print('Olá Mundo')# a partir da versão 3.0 Tipos de Operadores INCIDÊNCIA EMPROVA: ALTA Assim como na matemática, operadores são elementos utilizados em linguagens de programação para realizar operações. Existem quase 40 operadores em Python, mas nós não vamos ver todos porque diversos deles possuem um péssimo custo/benefício e não valerá a pena! Vamos nos ater – portanto – aos operadores mais cobrados em prova. Abaixo serão apresentadas categorias de operadores com suas descrições e exemplos. Operadores Matemáticos são os mais simples e mais comuns.Nós aprendemos todos eles na época de escola, então vocês não terão dificuldades: SÍMBOLO Operadores Aritméticos exemplo + Soma 10 + 10 = 20. - Subtração 20 - 20 = 0. * Multiplicação 15 * 25 = 375. 3 Esse paradigma trata um software como uma coleção de agentes interconectados chamados de objetos, que são uma posição na memória que funciona como abstração para qualquer coisa que tenha atributos e comportamentos (Ex: se eu quero representar pessoas em um software, eu posso criar um Objeto Pessoa e configurar seus atributos – pessoa tem nome, idade, altura, etc – e seus comportamentos – pessoa fala, come, anda, etc. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 15 69
  • 16. / Divisão 25 / 4 = 6,25. // Divisão com Piso 25 // 4 = 6 (6,25 arredondado para baixo) . ** Potenciação 2 ** 5 = 32. % Módulo 30 % 7 = 2 (resto da divisão). Operadores de Atribuição são usados para atribuir valores a variáveis! Considerem na tabela abaixo que as operações seguem uma sequência (o resultado da linha atual depende da linha anterior)4: SÍMBOLO Operadores de atribuição exemplo = Atribuição Simples x = 10 é o mesmo que atribuir o valor 10 a x. += Atribuição com Soma x += 1 é o mesmo que x = x + 1, logo x = 10 + 1 = 11. -= Atribuição com Subtração x -= 6 é o mesmo que x = x - 6, logo x = 11 – 6 = 5. *= Atribuição com Produto x *= 2 é o mesmo que x = x*2, logo x = 5 * 2 = 10. /= Atribuição com Divisão x /= 5 é o mesmo que x = x / 5, logo x = 10 / 5 = 2. Operadores de Comparação são utilizados para comparar valores! Nos exemplos abaixo, considere sempre que x = 1 e y = 2. Vejamos... SÍMBOLO Operadores de comparação exemplo == Igual x == y retorna Falso. != Diferente x != y retorna Verdadeiro. > Maior que x > y retorna Falso. < Menor que x < y retorna Verdadeiro. >= Maior ou igual a x >= y retorna Falso. <= Menor ou igual a x <= y retorna Verdadeiro. Operadores Lógicos são utilizados para combinar condições em expressões e também são frequentemente utilizados em Python. Nos exemplos abaixo, considerem que x = 10 e y = 20: SÍMBOLO Operadores Lógicos exemplo and Retorna Verdadeiro se ambas condições forem Verdadeiras x == 10 and y > 20 retorna Falso. or Retorna Verdadeiro se uma das condições for Verdadeira x == 10 or y > 20 retorna Verdadeiro. not Inverte o resultado de uma condição qualquer not(x == 10 or y > 20) retorna Falso. Operadores de Associação são utilizados para verificar se um conjunto de valores está presente em um objeto. Vejamos como funciona: 4 Diferente de outras linguagens, Python não possui o operador incremento (++) e decremento (--). Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 16 69
  • 17. SÍMBOLO Operadores de associação exemplo in Retorna Verdadeiro se o conjunto de valores estiver presente no objeto x = [“Flamengo”, “Vasco”] y = “Botafogo” in x print(y) retornará Falso porque Botafogo não está na lista. not in Retorna Verdadeiro se o conjunto de valores não estiver presente no objeto x = [“Flamengo”, “Vasco”] y = “Flamengo” not in x print(y) retornará Falso porque Flamengo está na lista. Funções INCIDÊNCIA EMPROVA: média Uma função é um bloco de código que é executado apenas quando é invocado. São três passos bem simples: (1) uma função é invocada; (2) é passado algum dado como parâmetro ou não; (3) e algum dado é retornado como resultado. No Python, uma função é definida utilizando a palavra- chave def. Sempre que você vir essa palavra em um código-fonte, saiba que ela está definindo uma função (lembrando que a utilização de chaves para delimitar o bloco é facultativa). Seguindo... Sintaxe: def NomeFunção(argumentos): def BomDia(): print('Bom dia!') No código acima, foi definida uma função chamada BomDia(). Toda vez que essa função for invocada, será impresso na tela as palavras “Bom dia!”. Professor, o que você quer dizer com invocar uma função? Invocar significa chamar essa função para que ela seja executada. Caso eu deseje que essa função seja executada em algum ponto do meu código-fonte, eu posso invocá-la bastando apenas chamar seu nome: BomDia(). Professor... e se a minha função precisar de alguns dados para que ela consiga processar alguma informação e retornar um resultado? Sem problemas! Nós podemos passar alguns parâmetros – também chamados de argumentos – dentro dos parênteses separados por vírgulas. Modificando um pouco a função definida no código anterior, nós podemos inserir um nome como parâmetro de modo que seja impressa uma mensagem que dependerá do parâmetro passado: def BomDia(nome): print('Bom dia, ',nome) Note que agora a função precisa de um parâmetro para que possa ser executada! Logo, se eu invoco essa função como BomDia(‘Diego’), será impressa a mensagem “Bom dia, Diego”. Vejam só: BomDia('Diego Carvalho') #Retornará Bom dia, Diego Carvalho BomDia('Renato da Costa') #Retornará Bom dia, Renato da Costa BomDia('Ricardo Vale') #Retornará Bom dia, Ricardo Vale BomDia('Herbert Almeida') #Retornará Bom dia, Herbert Almeida Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 17 69
  • 18. Como já dissemos, é possível também passar mais de um parâmetro para uma função. Para tal, basta separá-los por vírgula dentro dos parênteses: def BomDia(nome1, nome2): print('Bom dia, ' + nome1 + ' e ' + nome2) BomDia('Diego','Renato') #Retornará Bom dia, Diego e Renato Em todas as funções apresentadas, não se retornou nenhum resultado (dados apenas foram impressos em tela). No entanto, é possível retornar algum valor usando a palavra-chave return: def MultiplicaPorCinco(numero): return 5*numero #Retornará o número do parâmetro multiplicado por 5 print(MultiplicaPorCinco(1)) #Imprimirá 5*1 = 5 print(MultiplicaPorCinco(2)) #Imprimirá 5*2 = 10 print(MultiplicaPorCinco(3)) #Imprimirá 5*3 = 15 print(MultiplicaPorCinco(4)) #Imprimirá 5*4 = 20 print(MultiplicaPorCinco(5)) #Imprimirá 5*5 = 25 Um dado importante é que uma variável somente está disponível dentro da região em que ela é criada – chamamos isso de escopo! Como é, Diego? Vejam o código-fonte abaixo: def minhaFuncao(y): x = y + y #Escopo Local print(x) return x x = 5 #Escopo Global minhaFuncao(x) print(x) Notem que definimos inicialmente uma função chamada minhaFuncao( ). Toda variável criada dentro dessa função possui um escopo local, logo somente podem ser utilizadas dentro dessa função. Em seguida, temos x = 5 com uma indentação diferente, logo ele não possui escopo local daquela função, ele possui um escopo global. Por que? Porque ele não foi criado dentro da função, portanto ele existe e pode ser utilizado em qualquer parte do código. Dito isso, vamos analisar o código! A função é definida (linhas 1 a 4), depois cria-se uma variável x com valor 5 e chama-se a função com esse parâmetro (linha 7), logo minhaFuncao(5). Quando essa variável vai para dentro da função, ela é recebida como y (minhaFuncao(y)). E essa função cria uma variável x (que só existe dentro dela) e diz que x = y + y. Ora, quanto é y? y = 5, logo x = 5+5 = 10. Na linha 3, a função imprime x (logo, imprime 10) e retorna 10. Quando voltamos ao corpo principal do código-fonte, temos um print(x). Ora, quanto é x? Agora que vem o pulo do gato! Aquele x utilizado na função só existe lá dentro porque ele tem escopo local. Logo, quando voltamos ao corpo principal, ele não existe! No entanto, existe outro x no corpo principal. Qual? Aquele definido na linha 6! Logo, a linha 8 imprimirá 5! Legal, né? Imprimimos x duas vezes, mas dentro da função ele tem valor 10 e fora da função ele tem valor 5. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 18 69
  • 19. Por fim, é importante falar sobre funções/expressões lambda. O que é isso, Diego? São pequenas funções anônimas! Como assim? Galera, essas funções são úteis para deixar o código mais simples e legível. Elas são funções de uma única linha, isto é, não possuem nome e são declaradas como variáveis. Além disso, sua sintaxe não utiliza a palavra-chave def e nem utilizam a palavra return antes do comando porque se considera que haverá um retorno implícito. Sintaxe: lambda lista_de_argumentos : expressão Uma função anônima é útil principalmente nos casos em que precisamos de uma função para ser passada como parâmetro para outra função e que não será mais necessária após isso – como se fosse “descartável”. Vejam no exemplo abaixo a criação de uma função anônima que recebe dois parâmetros – x e y – e retorna a soma das duas variáveis. Essa função anônima é atribuída à variável s, que quando é invocada retorna essa soma: s = lambda x,y : x+y print(s(10,20)) #Retornará 10+20 = 30 Para finalizar, vamos ver uma comparação de uma função comum apresentada anteriormente com uma função lambda. Vejamos... def quadrado(x): return x*x print(quadrado(2)) #Retornará 4 Notem que se trata de uma função comum. Como poderíamos transformar essa função em uma expressão lambda? Basta utilizar a sintaxe apresentada anteriormente. Logo, teríamos... quadrado = lambda x: x*x print(quadrado(2)) #Retornará 4 Comentários INCIDÊNCIA EMPROVA: baixa A utilização de comentários é uma prática comum em programação. Seu objetivo é adicionar descrições em partes especificas do código, seja para documentá-lo, seja para descrevê-lo, ou mesmo, para marcar que uma determinada linha, ou um conjunto de linhas, não devem ser executadas. Podem ser utilizados para documentar programas, classes, funções, variáveis, constantes ou o que mais você desejarmos. Quando criamos uma funcionalidade, é importante que o código possua uma documentação para que os outros programadores (e até nós mesmos) entendam qual foi a lógica utilizada. Para adicionarmos comentários, utilizamos uma marcação especial a fim de informar ao Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 19 69
  • 20. interpretador para não interpretar os caracteres contidos na notação que demarca trechos de comentários. E que marcação seria essa, professor? No caso do Python, há notações diferentes para comentários de uma única linha e comentários de mais de uma linha. Caso você deseje fazer um comentário de apenas uma linha, pode utilizar o caractere cerquilha (#). Tudo que estiver à frente desse caractere deve ser ignorado pelo interpretador. Caso você deseje fazer um comentário com mais de uma linha, pode utilizar aspas triplas (simples ou duplas). Vejamos alguns exemplos: # Comentário para documentar a função "Olá, Mundo!" print("Olá, Mundo!") ’’’ Comentário para documentar a função "Olá, Mundo!" com mais de uma linha e aspas simples ’’’ print("Olá, Mundo!") ””” Comentário para documentar a função "Olá, Mundo!" com mais de uma linha e aspas duplas ””” print("Olá, Mundo!") Tipos e Variáveis Definições INCIDÊNCIA EMPROVA: baixíssima Em nível de hardware, seu computador possui um componente chamado Memória RAM, que é responsável – grosso modo – por armazenar dados, sendo composta por milhões e milhões de posições ou espaços físicos. Em nível de software, dados são armazenados – em geral – em variáveis,que sãoessas posições na memória responsáveis porarmazenardados e identificadas por um nome. Notem abaixo que há uma posição na memória do computador que guarda um espaço físico e que nós demos o nome dessa posição de numeroDaConta. Logo, esse é o nome que identifica esse endereço na memória do computador. Essa posição pode armazenar uma variável, que são dados que podem variar com o tempo ou circunstância. Note pela imagem que atualmente essa variável está armazenando o valor 4823 na posição numeroDaConta. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 20 69
  • 21. O conteúdo de uma variável pode ser alterado, consultado ou apagado diversas vezes durante a execução de um algoritmo, porém ovalorapagado será perdido. Eugosto de pensar navariável como uma caixa aberta, em que você inserir, retirar ou modificar coisas de dentro. Em contraste com uma constante, que seria uma caixa em que – uma vez inserido algo dentro – não mais permite inserções, alterações ou remoções enquanto o programa estiver sendo executado. Galera, assim como as línguas faladas, as linguagens de programação possuem o que chamamos de declarações. O que são declarações? Basicamente são pensamentos completos e individuais – por exemplo: “Eu quero café” ou “Está chovendo”. Usando palavras diferentes, podemos mudar o significado – por exemplo: “Eu quero café” para “Eu quero unicórnios”. No entanto, não podemos mudar de “Eu quero café” para “Eu quero chovendo” – que não faz sentido gramatical. O conjunto de regras que governam a estrutura e composição de declarações em uma linguagem é chamado de sintaxe. Assim como o idioma Português possui uma sintaxe, todas as linguagens de programação também possuem. Vejam só: a é igual a 5 é uma declaração na língua portuguesa; a = 5 também é uma declaração, mas na linguagem de programação Python. Neste caso, a declaração diz que uma variável chamada a armazena o número inteiro 5. Galera, quando uma declaração atribui um valor a uma variável, nós chamamos isso de "declaração de atribuição". É possível também expressar coisas mais complexas como: A é 5; B é 10; C é A mais B; O que o algoritmo acima está querendo dizer? Este algoritmo diz ao computador para definir a variável A como 5, a variável B como 10, e, finalmente, somar A e B e armazenar o resultado na variável C. Legal, não é? Note que podemos chamar as variáveis de qualquer coisa que nós quisermos desde que cumpra a sintaxe da linguagem de programação escolhida. Em vez de A, B e C, poderíamos chamar de Maçã, Pera e Uva. Pessoal, é claro que uma melhor prática seria nomeá-las com coisas que façam sentido no caso de alguém mais tentar entender seu código. Imaginem vocês tentando ler um código escrito por outra pessoa! Fica mais fácil de compreender Maçã, Pera e Uva do que A, B e C. Concordam? Legal! As declarações atribuem identificadores para variáveis, tipos, funções, entre outros. Vamos agora ver como tudo isso funciona especificamente no Python! o/ Identificadores INCIDÊNCIA EMPROVA: baixa Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 21 69
  • 22. O que é uma variável? Variáveis são uma espécie de contêiner para armazenar valores de dados. No Python, as variáveis possuem duas particularidades: (1) variáveis são consideradas um tipo de objeto; (2) variáveis não precisam ser previamente declaradas. Como é, Diego? Em outras linguagens de programação, é necessário usar um comando para declarar uma variável. No Python, não é necessário usar comando nenhum, basta informar o nome e o valor que será armazenado. nome = "Diego" idade = 31 Vejam acima que não é necessário usar nenhum comando, eu simplesmente inseri o nome da variável e o seu valor! Em outras linguagens de programação, eu teria que fazer algo como: var nome = "Diego" var idade = 31 Além disso, não é necessário informar qual é o tipo da variável, isto é, quais tipos de valores serão armazenados na variável. Em outras linguagens de programação, eu teria que fazer algo como: var string nome = "Diego" var int idade = 31 É possível fazer várias atribuições de variáveis em uma mesma linha. Para tal, basta separar os identificadores por vírgula do lado esquerdo da atribuição e manter a mesma ordem no lado direito: nome, idade = "Diego", 31 Professor, eu posso dar qualquer nome para uma variável? Não é bem assim! Identificadores de variáveis válidos devem obedecer às seguintes regras:  Começar necessariamente com uma letra ou _ (underline);  Jamais devem começar com um número;  Conter caracteres alfanuméricos e undelines (a-z, A-Z, 0-9 e _);  São Case-Sensitive, isto é, capazes de diferenciar maiúscula de minúscula. Essa mesma regra vale também para identificação de funções, classes, módulos, entre outros. Vejamos alguns exemplos de nomes válidos e inválidos: NOMESVÁLIDOSDE VARIÁVEIS NOMES INVÁLIDOS DE VARIÁVEIS nomevariavel = "Diego" 2nomevariavel = "Diego" nome_variavel = "Diego" nome-variavel = "Diego" _nome_variavel = "Diego" nome variavel = "Diego" nomeVariavel = "Diego" nome#variavel = "Diego" NOMEVARIAVEL = "Diego" Nome%variavel = "Diego" nomevariavel2 = "Diego" n0m3v@r1@vel = "Diego" Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 22 69
  • 23. O Python possui uma função chamada print() responsável por imprimir na tela do computador o valor de uma variável. Vejamos como funciona: nome = "Diego" idade = 31 print(nome) #Imprimirá: Diego print(idade) #Imprimirá: 31 Para imprimir um texto junto com o valor de uma variável, basta utilizar o caractere +. Lembrando que esse caractere serve tanto para somar o valor de variáveis quanto para realizar concatenações. nome = "Diego" idade = 31 print("Prof. " + nome + " tem " + str(idade) + " anos") #Imprimirá: Prof. Diego tem 31 anos Professor, o que é essa função str( ) com o parâmetro idade? Muito observador você... nós vamos entender no próximo tópico :) Tipos de Dados INCIDÊNCIA EMPROVA: ALTA CATEGORIA TIPO PYTHON Exemplo BOOLEANO Booleano bool x = True x = False numérico Inteiro int x = 10 x = -5 Ponto Flutuante float x = 10.7 x = -2.8 Complexo complex x = 345j x = 2-9j textual Texto str x = 'texto' x = "texto" Coleção/sequência Lista list x = [4, 8] x = list() Tupla tuple x = (5, 10) x = tuple() Set set x = {2, 4} x = set( ) Dicionário dictionary x = {'nome': 'Diego', idade: 31} Nos próximos tópicos, vamos detalhar os tipos coleção e dicionário! Por enquanto, é importante mencionar alguns detalhes sobre os tipos booleano, numérico e textual. O tipo booleano não tem nada demais – ele só representa dois valores: True ou False. Isso é extremamente útil em programação para avaliar se alguma expressão é verdadeira ou falsa. Quando você compara dois valores, por exemplo, retorna-se um valor verdadeiro ou falso. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 23 69
  • 24. Já os números podem ser inteiros, ponto flutuante ou complexos. Inteiro é um número positivo ou negativo sem decimais (Ex: 2, -50, 137); Ponto Flutuante é um número positivo ou negativo com um ou mais decimais (Ex: -0.5, 3.1415, 137.0); e Complexo é um número escrito com a letra j para indicar a parte imaginária (Ex: 8j, -14j, 500j). Vocês se lembram quando estudaram números complexos na escola? Pois é, pode ignorar aqui também porque isso não cai. Por fim, variáveis textuais/literais são cadeias de caracteres chamadas de string. Trata-se de uma sequência de caracteres geralmente utilizada para representar caracteres, palavras, frases ou textos. Os valores podem virdentro de aspas simples ou aspas duplas (Ex: ‘Diego’ ou “Diego”). Além disso, os caracteres que compõem uma string podem seracessados individualmente. Para tal, basta utilizar colchetes. Vejamos... nome = "Diego" print(nome[0]) #Retornará o caractere de índice 0 = “D” Nós falamos que uma string é uma cadeia de caracteres. Logo, no exemplo acima, é como se nome fosse uma variável que armazenasse [“D”,”i”,”e”,”g”,“o”]. Cada letra nessa cadeia está associada a um índice sequencial: nome[0] = “D”; nome[1] = “i”; nome[2] = “e”; nome[3] = “g”; nome[4] = “o”. E se você quisesse retornar apenas os caracteres do meio dessa string? Nesse caso, bastaria utilizar a instrução print(nome[1:4] = “ieg”). Vamos ver agora algumas funções textuais úteis: funções DESCRIÇÃO EXEMPLO capitalize() Converte o primeiro caractere em maiúscula. x = “olá, mundo!” print(x.capitalize()) #retorna “Olá, mundo!” find() Retorna a posição da primeira ocorrência de um valor em uma string ou -1 se não existir. x = “Uma vez Flamengo, sempre Flamengo!” print(x.find(“vez”)) #retorna 4 index() Semelhante ao find(), mas retorna uma exceção caso o valor não exista. x = “Uma vez Flamengo, sempre Flamengo!” print(x.index(“vasco”)) #retorna ValueError len() Retorna o tamanho da string. x = “Uma vez Flamengo, sempre Flamengo!” print(len(x)) #retorna 34 split() Divide substrings encontradas a partir de um separador especificado e retorna uma lista. x = “Olá, Mundo!” print(x.split(“,”)) #retorna ['Olá', ' Mundo!'] strip() Remove espaços em branco (ou caracteres dentro do parêntese) do início/fim da string. x = “ Olá, mundo! ” print(x.strip()) #retorna “Olá, Mundo!” É importante falar rapidamente sobre casting! Esse é um recurso que permite definir ou converter o tipo de uma variável. Em geral, isso é feito por meio de três funções: FUNÇÃODE CASTING DESCRIÇÃO int() Converte variáveis do tipo inteiro, ponto flutuante ou string em um inteiro. #Exemplos: x = int(100) #x será 100 y = int(4.8) #y será 4 z = int('5') #z será 5 Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 24 69
  • 25. float() Converte variáveis do tipo inteiro, ponto flutuante ou string em um ponto flutuante. #Exemplos: x = float(100) #x será 100.0 y = float(3.6) #y será 3.6 z = float('2') #z será 2.0 str() Converte variáveis do tipo inteiro, ponto flutuante ou string em uma string. #Exemplos: x = str('Diego') #x será ‘Diego’ y = str(1234567) #y será ‘1234567’ z = str(3.14159) #z será ‘3.14159’ Estruturas de Dados Meus queridos, nós estudamos cinco tipos de dados no tópico anterior (booleano, inteiro, ponto flutuante, complexo e textual). Todos eles possuem uma característica em comum: são capazes de armazenar um único dado. No entanto, para armazenar múltiplos itens dentro de uma única estrutura, utilizamos estruturas de dados. No caso do Python, essas estruturas de dados são chamadas de coleções (collections). Vamos entender isso melhor... Uma coleção é um contêiner utilizado para armazenar uma coleção de dados. Em outras palavras, trata-se de uma estrutura de dados utilizada para armazenar objetos. Galera, em algumas situações você precisa armazenar um conjunto de valores e – não apenas – um único valor. Para escolher qual coleção será utilizada, é importante entender as propriedades de cada tipo a fim de tirar o melhor possível de cada estrutura. Bem, existem quatro tipos de coleção... TIPODE COLEÇÃO TRADUÇÃO DESCRIÇÃO LIST LISTA Trata-se de uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados. TUPLE TUPLA Trata-se de uma coleção de valores ordenados, imutáveis e indexáveis que pode conter valores duplicados (também podem ser chamadas de sequências). SET CONJUNTO Trata-se de uma coleção de valores desordenados, mutáveis e não indexáveis que não pode conter valores duplicados. DICTIONARY DICIONÁRIO Trata-se de uma coleção de valores desordenados, mutáveis e indexáveis que não pode conter valores duplicados. Calma! Nós vamos explicar tim-tim por tim-tim cada uma dessas características das coleções em tópicos específicos nas próximas páginas... Listas INCIDÊNCIA EMPROVA: Altíssima Uma lista é uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados e são delimitadas por colchetes. Vejamos um exemplo: Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 25 69
  • 26. ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas) #Retornará ['maçã', 'carambola', 'banana'] Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em uma única variável. Legal, mas e se eu quiser acessar uma fruta específica? Vejamos... ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas[1]) #Retornará carambola Galera, cada valor em uma lista é indexado por um número inteiro. O que isso significa? Significa que existe um número inteiro que referencia cada valor da lista com o intuito de facilitar seu acesso. Professor, não deveria ter retornado maçã em vez de carambola, uma vez que foi utilizado o índice [1]? Não, porque – por convenção – adotou-se que o índice de lista começa sempre pelo [0] (zero). Vejam só o que aconteceria se o código fosse assim: ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas[0]) #retornará maçã print(ListaFrutas[1]) #retornará carambola print(ListaFrutas[2]) #retornará banana print(ListaFrutas[3]) #retornará IndexError: list index out range Note que se eu tentar acessar o índice [3], retornará Erro de Índice: índice da lista fora de alcance. Professor, e se eu quiser modificar algum valor dessa lista? É muito simples também... ListaFrutas[0] = "manga" ListaFrutas[2] = "carambola" print(ListaFrutas) #retornará ['manga', 'carambola', carambola] Percebam que eu mudei o valor armazenado no índice [0] e índice [1] da lista e o resultado correspondeu aos novos valores. Dito isso, vamos relembrar nossa definição inicial de lista? Uma lista é uma coleção de valores ordenados, mutáveis e indexáveis que pode conter valores duplicados. Uma lista é uma coleção de valores? Sim, nós vimos que ele é capaz de armazenar múltiplos dados. Os valores de uma lista são ordenados? Sim, ser ordenado significa que há uma ordem qualquer. Professor, é necessariamente uma ordem alfabética ou numérica? Não, pode ser qualquer ordem! Os valores de uma lista são mutáveis? Sim, nós vimos que é possível modificar seus valores no exemplo anterior. Os valores de uma lista podem ser duplicados? Sim, em nossa lista final, há duas ocorrências da fruta ‘carambola’. Bem, agora nós já conseguimos entender cada ponto da definição de lista, então chegou o momento de nos aprofundar mais... O que acontece se eu utilizar um índice negativo em uma lista? Galera, um índice negativo significa que a lista começa do fim para o início. Como é, Diego? É só ver a lista de modo invertido, olha só... Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 26 69
  • 27. ListaFrutas = ["maçã", "carambola", "banana"] print(ListaFrutas[-1]) #retornará banana print(ListaFrutas[-2]) #retornará carambola print(ListaFrutas[-3]) #retornará maçã print(ListaFrutas[-4]) #retornará IndexError: list index out range Note que há uma observação: “maçã” está no índice [0] e no índice [-3]. Além disso, é possível especificar uma extensão de índices também... ListaFrutas = ["maçã", "carambola", "banana", "pera", "laranja", "amora"] print(ListaFrutas[1:2]) #retornará [‘carambola’] print(ListaFrutas[1:3]) #retornará [‘carambola’, ‘banana’] print(ListaFrutas[1:4]) #retornará ['carambola', 'banana', 'pera'] print(ListaFrutas[1:5]) #retornará ['carambola', 'banana', 'pera', 'laranja'] Note que o valor contido na posição do índice à esquerda dos dois-pontos é retornado, mas o valor contido na posição do índice à direita, não. Há também algumas variações: ListaFrutas = ["maçã", "carambola", "banana", "pera", "laranja", "amora"] print(ListaFrutas[:2]) #retornará ['maçã', 'carambola'] print(ListaFrutas[3:]) #retornará ['pera', 'laranja', 'amora'] Note que – se não inserirmos nenhum valor à esquerda – considera-se como [0] ; e – se não inserirmos nenhum valor à direita, considera-se até o final da lista. Galera, nós temos visto diversos exemplos em que todos os valores da lista são do tipo texto, mas eles poderiam ter outros tipos (inclusive tipos diferentes em uma mesma lista). Por essa razão, dizemos que uma lista é um tipo de coleção heterogênea. Galera, nós já vimos que é possível criar funções em Python, mas já existem diversas funções (ou métodos) prontos para serem utilizados. Vamos conhecê-los... FUNÇÃO DESCRIÇÃO EXEMPLO len( ) Função utilizada para retornar quantos itens uma lista possui. ListaQualquer = [2020, "Flamengo", True] print(len(ListaQualquer)) #Retornará 3 append( ) Função utilizada para adicionar um itemao final da lista.Pensando como uma pilha, de modo inverso a uma lista, ele adiciona um item no topo.5 ListaQualquer = [2020, "Flamengo", True] ListaQualquer.append(5) print(ListaQualquer) #Retornará [2020, "Flamengo", True, 5] insert( ) Função utilizada para adicionar um item a um índice especificado. ListaQualquer = [2020, "Flamengo", True, 5] ListaQualquer.insert(3,"Bola") print(ListaQualquer) 5 Em programação, existe o conceito de pilha. O que é uma pilha? Pensem em uma pilha de pratos: o último prato a ser adicionado é o primeiro a ser lavado. Em programação, é semelhante: o último elemento a ser adicionado na pilha é o primeiro a ser recuperado, em contraste com a lista, em que o primeiro elemento a ser adicionado é também o primeiro a ser recuperado (como em uma fila). Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 27 69
  • 28. #Retornará [2020, "Flamengo", True, 'Bola', 5] remove( ) Função utilizada para remover a primeira ocorrência de um item especificado em uma lista. ListaQualquer = [2020, "Flamengo", True, "Bola", 5] ListaQualquer.remove(2020) print(ListaQualquer) #Retornará ["Flamengo", True, "Bola", 5] pop( ) Função utilizada para remover item especificado (ou o último item se nenhum item for especificado). Pensando como uma pilha, de modo inverso a uma lista, essa função recupera o primeiro item quando não é espeficiado. ListaQualquer = ["Flamengo", True, "Bola", 5] ListaQualquer.pop() print(ListaQualquer) #Retornará ["Flamengo", True, "Bola"] ListaQualquer.pop(2) print(ListaQualquer) #Retornará ["Flamengo", True"] del( ) Função utilizada para remover um itemespecificado (ou a lista inteirase o nenhum índice for especificado). Caso a lista seja excluída, ela não poderá mais ser referenciada. ListaQualquer = ["Flamengo", True, "Bola", 5] del ListaQualquer[3] print(ListaQualquer) #Retornará ["Flamengo", True, "Bola"] del ListaQualquer #Excluirá a lista clear( ) Função utilizada para esvaziar uma lista. ListaQualquer = ["Flamengo", True, "Bola", 5] ListaQualquer.clear() print(ListaQualquer) #Retornará a lista vazia [] copy( ) Função utilizada para copiar uma lista. ListaQualquer = ["Flamengo", True, "Bola", 5] ListaQualquer2 = ListaQualquer.copy() print(ListaQualquer2) #Retornará ["Flamengo", True, "Bola", 5] list( ) Função utilizada para criar uma nova lista. ListaQualquer = list(("Flamengo", True, "Bola", 5)) print(ListaQualquer) #Note que deve ter parênteses duplos count( ) Função utilizada para retornar a quantidade de vezes que um valor específico aparece em uma lista. ListaQualquer = ["Flamengo", True, "Flamengo", 5] print(ListaQualquer.count("Flamengo")) #Retornará 2 (“Flamengo aparece duas vezes”) extend( ) Função utilizada para adicionar elementos específicos de uma lista ao final de outra lista. ListaQualquer1 = ["Bola", 5] ListaQualquer2 = ["Flamengo", True] ListaQualquer1.extend(ListaQualquer2) print(ListaQualquer1) #Retornará ["Bola", 5, "Flamengo", True] index( ) Função utilizada para retornar o índice da primeira ocorrência de um valor especificado. ListaQualquer = ["Flamengo", True, "Bola", 5] print(ListaQualquer.index("Flamengo")) #Retornará 0 print(ListaQualquer.index(True)) #Retornará 1 print(ListaQualquer.index("Bola")) #Retornará 2 print(ListaQualquer.index(5)) #Retornará 3 reverse( ) Função utilizada para inverter a ordem dos elementos de uma lista. ListaQualquer = ["Flamengo", True, "Bola", 5] ListaQualquer.reverse() print(ListaQualquer) #Retornará [5, 'Bola', True, 'Flamengo'] sort( ) ListaQualquer = ["Flamengo", "Vasco", "Santos", "Bahia"] ListaQualquer.sort() print(ListaQualquer) Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 28 69
  • 29. Função utilizada para ordenar uma simples em ordem ascendente (por padrão – sem necessidade de parâmetros) ou descendente (parâmetro reverse=True). #Retornará ['Bahia', 'Flamengo', 'Santos', 'Vasco'] ListaQualquer.sort(reverse=True) print(ListaQualquer) #Retornará ['Vasco', 'Santos', 'Flamengo', 'Bahia'] range() Função utilizada para retornar uma lista de números,começando do zero (por padrão) e incrementando em uma unidade (por padrão) e parando em um número especificado. Sua sintaxe é: range(start, stop, step) – sendo que start é opcional e incluso; step é opcional e pode ser negativo; e stop é obrigatório e não é incluso. listaQualquer = range(5, 20, 3) print(list(listaQualquer)) #retorna [5, 8, 11, 14, 17] listaQualquer = range(4, 10) print(list(listaQualquer)) #retorna [4, 5, 6, 7, 8, 9] listaQualquer = range(6) print(list(listaQualquer)) #retorna [0, 1, 2, 3, 4, 5] Vamos resumir as características básicas de uma lista (list) em uma tabelinha que será incrementada à medida que estudarmos os outros tópicos sobre coleções: Critério List Ordenação Ordenada Modificação mutável Duplicatas Permite duplicatas Indexação Porinteiro delimitador Entre colchetes[] Tuplas INCIDÊNCIA EMPROVA: baixa Uma tupla (ousequência) é uma coleçãode valores ordenados,imutáveis e indexáveis que pode conter valores duplicados e são delimitadas por parênteses. Vejamos um exemplo: TuplaFrutas = ("maçã", "carambola", "banana") print(TuplaFrutas) #Retornará ('maçã', 'carambola', 'banana') Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em uma única variável. Legal, mas e se eu quiser acessar uma fruta específica? Vejamos... TuplaFrutas = ("maçã", "carambola", "banana") print(TuplaFrutas[0]) #Retornará maçã print(TuplaFrutas[1]) #Retornará carambola print(TuplaFrutas[2]) #Retornará banana print(TuplaFrutas[3]) #Retornará IndexError: list index out range Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 29 69
  • 30. Note que a tupla é delimitada por parênteses, mas o índice sempre será representado entre colchetes. Galera, tuplas são muito parecidas com listas, isto é, a forma de acessar é semelhante, existem índices negativos, é possível acessar uma extensão de índices. No entanto, há uma diferença fundamental: tuplas são imutáveis!Isso significa que – uma vez criada – você não poderá mais modificar seus itens. Diego, eu não posso modificar, mas eu posso inserir ou remover itens? Não, você não pode modificar absolutamente nada! Caso seja necessário, a única alternativa seria convertê-la em lista: TuplaFrutas = ("maçã", "carambola", "banana") print(TuplaFrutas) #Retornará ('maçã', 'carambola', 'banana') ListaFrutas = list(TuplaFrutas) #Converte a Tupla em uma Lista ListaFrutas[1] = "abacate" print(ListaFrutas) #Retornará ['maçã', 'abacate', 'banana'] Vejamos agora algumas funções (ou métodos) que podem ser utilizadas com tuplas (ou sequências). Fiquem tranquilos, agora são apenas quatro: FUNÇÃO DESCRIÇÃO EXEMPLO len( ) Função utilizada para retornar quantos itens uma tupla possui. TuplaQualquer = (2020, "Flamengo", True) print(len(TuplaQualquer)) #Retornará 3 count( ) Função utilizada para retornar a quantidade de vezes que um valor específico ocorre em uma tupla. TuplaQualquer = (8, 6, 1, 9, 1, 9, 1, 6, 5, 1) print(TuplaQualquer.count(2)) #Retornará 0 print(TuplaQualquer.count(6)) #Retornará 2 print(TuplaQualquer.count(1)) #Retornará 4 print(TuplaQualquer.count(9)) #Retornará 2 index( ) Função utilizada para buscar por um valor específico e retornaro índice de sua primeira ocorrência na tupla. TuplaQualquer = (8, 6, 1, 9, 1, 9, 1, 6, 5, 1) print(TuplaQualquer.index(5)) #Retornará 8 print(TuplaQualquer.index(6)) #Retornará 1 print(TuplaQualquer.index(1)) #Retornará 2 print(TuplaQualquer.index(9)) #Retornará 3 tuple( ) Função utilizada para criar uma nova tupla. TuplaQualquer = tuple(("Flamengo", True, "Bola", 5)) print(TuplaQualquer) #Note que deve ter parênteses duplos Vamos resumir as características básicas de uma tupla (tuple) em uma tabelinha que será incrementada à medida que estudarmos os outros tópicos sobre coleções: Critério List Tuple Ordenação Ordenada Ordenada Modificação mutável imutável Duplicatas Permite duplicatas Permite duplicatas Indexação Porinteiro Porinteiro Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 30 69
  • 31. delimitador Entre colchetes[] Entre parênteses( ) Sets INCIDÊNCIA EMPROVA: baixíssima Um set (ou conjunto) é uma coleção de valores desordenados, mutáveis e não indexáveis que não pode conter valores duplicados e são delimitadas por chaves. Vejamos um exemplo: SetFrutas = {"maçã", "carambola", "banana"} print(SetFrutas) #Retornará uma sequência desses três valores em ordem aleatória Apesar de termos declarado o conjunto acima como maçã, carambola e banana, não existe uma ordem! Se eu executar várias vezes o comando print acima, poderíamos ter resultados diferentes para cada execução. No caso acima, poderíamos ter uma das seis possibilidades apresentadas abaixo. Como não há uma ordenação, não há como indexar os valores por nenhum número inteiro. Entendido? {"maçã", "carambola", "banana"} ou {"maçã", "banana", "carambola"} ou {"carambola", "maçã", "banana"} ou {"carambola", "banana", "maçã"} ou {"banana", "maçã", "carambola"} ou {"banana", "carambola", "maçã"} Nós não vamos nos estender nesse tipo de coleção, porque ela quase não cai em prova (tanto que não encontrei nenhuma questão sobre ela). De todo modo, vejamos algumas funções: FUNÇÃO DESCRIÇÃO EXEMPLO len( ) Função utilizada para retornar quantos itens um conjunto possui. SetQualquer = {2020, "Flamengo", True} print(len(SetQualquer)) #Retornará 3 add( ) Função utilizada para adicionar um item a um conjunto. SetQualquer = {2020, "Flamengo", True, 5} SetQualquer.add("Bola") print(SetQualquer) #Retornará o set original com “Bola” dentro do conjunto update( ) Função utilizada para adicionar elementos específicos de um conjunto ao final de outro conjunto. SetQualquer1 = {"Bola", 5} SetQualquer2 = {"Flamengo", True} SetQualquer1.update(SetQualquer2) print(SetQualquer1) #Retornará a união dos dois conjuntos em alguma ordem remove( ) Função utilizada para remover a primeira ocorrência de um item especificado em um conjunto. SetQualquer = {2020, "Flamengo", True, "Bola", 5} SetQualquer.remove(2020) print(SetQualquer) #Retornará o set original sem 2020 dentro do conjunto Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 31 69
  • 32. clear( ) Função utilizada para esvaziar um conjunto. SetQualquer = {"Flamengo", True, "Bola", 5} SetQualquer.clear() print(SetQualquer) #Retornará o set vazio {} del( ) Função utilizada para remover um conjunto (set) inteiro. SetQualquer = {"Flamengo", True, "Bola", 5} del SetQualquer #Excluirá o set Vamos resumir as características básicas de um conjunto (set) em uma tabelinha que será incrementada à medida que estudarmos os outros tópicos sobre coleções: Critério List Tuple Set Ordenação Ordenada Ordenada Nãoordenada Modificação Mutável Imutável mutável Duplicatas Permite duplicatas Permite duplicatas Nãopermite duplicatas Indexação Porinteiro Porinteiro Nãoindexada delimitador Entre colchetes[] Entre parênteses( ) Entre chaves{ } Dicionários INCIDÊNCIA EMPROVA: baixa Um dicionário é uma coleção de valores desordenados, mutáveis e indexáveis que pode não conter valores duplicados e são delimitadas por chaves. Galera, como funciona um dicionário de língua portuguesa? Você basicamente procura uma palavra e encontra seu significado. Aqui o dicionário funciona de maneira semelhante, no entanto – em vez de utilizar uma estrutura de palavra:significado – utiliza uma estrutura de chave:valor. Essa é uma primeira diferença sobre as coleções dos tópicos anteriores – as chaves delimitam um conjunto de chave:valor. Vamos ver um exemplo para ficar mais claro: DicioQualquer = { "marca": "Ford", "modelo": "Fiesta", "ano": 2015 } print(DicioQualquer) #Retornará {'marca': 'Ford', 'modelo': 'Fiesta', 'ano': 2015} Vejam que realmente se trata de uma coleção, uma vez que armazena múltiplos valores em uma única variável. Legal, mas se eu quiser acessar um valor específico? Vejamos... DicioQualquer = { "marca": "Ford", "modelo": "Fiesta", "ano": 2015 } print(DicioQualquer["modelo"]) #Retornará Fiesta Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 32 69
  • 33. Observem que eu passei como parâmetro uma chave e ele me retornou um valor. O acesso a esse valor específico também poderia ser feito utilizando a função get(): print(DicioQualquer.get("modelo")) #Retornará Fiesta E se eu quiser modificar um valor do meu dicionário, também é muito simples! Basta informar o valor da chave e o nome valor a ser atribuído: DicioQualquer = { "marca": "Ford", "modelo": "Fiesta", "ano": 2015 } DicioQualquer["modelo"] = "Ranger" print(DicioQualquer) #Retornará {'marca': 'Ford', 'modelo': 'Ranger', 'ano': 2015} E para adicionar um novo valor ou deletar um valor existente, Diego? Também é completamente possível, porque lembrem-se que essa coleção é do tipo mutável: DicioQualquer = { "marca": "Ford", "modelo": "Fiesta", "ano": 2015 } DicioQualquer["cor"] = "Prata" print(DicioQualquer) #Retornará 'marca': 'Ford', 'modelo': 'Fiesta', 'ano': 2015, 'cor': 'Prata'} del DicioQualquer["ano"] print(DicioQualquer) #Retornará marca': 'Ford', 'modelo': 'Fiesta', 'cor': 'Prata'} Por fim, é importante mencionar os itens são indexados por string e, não, por inteiros. Além disso, ele não pode conter duplicatas nas chaves, mas pode conter duplicadas nos valores. FUNÇÃO DESCRIÇÃO EXEMPLO len( ) Função utilizada para retornar quantos itens um dicionário possui. DicioQualquer = { "marca": "Ford", "modelo": "Fiesta", "ano": 2015 } print(len(DicioQualquer) #Retornará 3 copy Função utilizada para copiar um dicionário para outro. DicioQualquer = { "marca": "Ford", "modelo": "Fiesta", "ano": 2015 } DicioQualquer2 = DicioQualquer1.copy() Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 33 69
  • 34. #Outra forma de implementar seria usando dict(): DicioQualquer2 = dict(DicioQualquer1) Chegamos finalmente à versão final da nossa tabela comparativa entre tipos de coleções inserindo dicionários (dictionary). Essa tabela será muito útil para vocês, então guardem-na com carinho! Critério List Tuple Set Dictionary Ordenação Ordenada Ordenada Nãoordenada Nãoordenada Modificação Mutável Imutável Mutável mutável Duplicatas Permite duplicatas Permite duplicatas Nãopermite duplicatas Nãopermite duplicatas Indexação Porinteiro Porinteiro Nãoindexada Porstring delimitador Entre colchetes[] Entre parênteses( ) Entre chaves{ } Entre chaves{ } Controle de Fluxo Galera, em geral as instruções de uma receita de bolo – como a mostrada no início da aula – aparecem de forma vertical de cima para baixo. Vocês se lembram, não é? Em programas de computador, ocorre da mesma forma! O programa começa na primeira instrução e desce uma de cada vez até atingir eventualmente o seu fim. Até agora, nós mostramos poucas instruções, mas um software pode possuir muitas linhas de código (Ex: Windows possui mais de 2 milhões). Vocês se lembram que uma forma de representar algoritmos é por meio de um fluxograma? Pois é, um fluxograma representa os possíveis fluxos oucaminhos que um programa pode tomar. Eu disse que as instruções de um software são lidas verticalmente uma após a outra, mas isso não significa que todas as instruções devem ser executadas na ordem apresentada. Por que? Por conta das Estruturas de Controle de Fluxo! Nós vamos estudar a seguir as principais estruturas de controle de fluxo: Estruturas de Decisão (If) e Estruturas de Repetição (While e For). Vamos lá... Estrutura de Decisão (If-Elif-Else) INCIDÊNCIA EMPROVA: Altíssima Também chamadas de Estruturas de Seleção ou Condição, elas permitem interferir na sequência natural de instruções executadas dependendo de uma condição de teste. Nós vimos que a execução de instruções em geral ocorre em uma sequência uma após a outra, porém – por meio de condições – é possível mudar a sequência natural de execução. A estrutura de condição mais simples em algoritmos é conhecida como If (Se) e é utilizada da seguinte forma: if expressão-lógica: bloco-de-instruções Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 34 69
  • 35. A <expressão-lógica> é uma expressão/condição que retorna um valor verdadeiro ou falso e, caso o resultado dessa expressão seja verdadeiro, será executado o bloco de comandos que está dentro dessa estrutura; caso seja falso, a execução do programa ignora o bloco de comandos e continua na linha seguinte à estrutura de condição. Uma condição falsa poderia ser: 10 > 20; e uma condição verdadeira poderia ser 30 = 30. O bloco-de-instruções é uma sequência de código que será executada somente quando o resultado da expressão lógica for verdadeiro. Por fim, é preciso tomar cuidado com a indentação (o recuo no começo da linha) para definir o escopo dessa instrução. Dito isso, vamos analisar o código apresentado abaixo. Note que ele define duas variáveis (a e b) e – em seguida – apresenta uma instrução if que avalia uma expressão lógica. a = 20 b = 50 if b > a: print("b é maior que a") #Retornará b é maior que a Perceba que b é realmente maior que a, logo a expressão lógica é verdadeira. Se ela é verdadeira, o comando na linha abaixo – que possui um recuo maior – será executado. E se não tiver recuo? a = 20 b = 50 if b > a: print("b é maior que a") #Retornará IndentationError: expected na indented block Caso não haja esse recuo (indentação), o código retornará um erro porque é obrigatório que haja um bloco de instruções indentado para executar a instrução. Dessa forma, podemos dizer que a instrução se é como uma bifurcação na estrada. O caminho que você toma depende da avaliação da expressão lógica (se é verdadeira ou falsa). Pronto, nós acabamos de aprender nossa primeira declaração condicional. Só que ainda não acabou... Há uma outra palavra-chave utilizada quando uma condição não foi satisfeita, mas eu gostaria de fazer outro teste. Para tal, utiliza-se a palavra-chave elif. Como funciona, Diego? A sintaxe é... if expressão-lógica1: bloco-de-instruções1 Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 35 69
  • 36. elif expressão-lógica2: bloco-de-instruções2 Vamos ver um exemplo semelhante ao apresentado anteriormente, mas agora o código testará uma condição e, se ela não for verdadeira, ele testará outra condição: a = 50 b = 50 if b > a: print("b é maior que a") elif a == b: print("a e b são iguais") #Retornará a e b são iguais No exemplo acima, analisa-se a primeira expressão lógica (linha 4): b > a. Essa expressão é verdadeira ou falsa? É falsa, logo não se executa a instrução da linha 5. Em seguida, analisa-se a segunda expressão lógica (linha 6): a == b. Essa expressão é verdadeira ou falsa? É verdadeira, logo executa-se a instrução da linha 7 e imprime na tela a mensagem: a e b são iguais. Bacana! Estamos aumentando nosso vocabulário. Agora vamos aprender mais uma palavra-chave: else. if expressão-lógica1: bloco-de-instruções1 elif expressão-lógica2: bloco-de-instruções2 else: bloco-de-instruções3 Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 36 69
  • 37. Para ficar mais claro, imagine o software de uma faculdade que calcula se um aluno qualquer foi aprovado, reprovado ou se ficou de recuperação a partir de expressões lógicas: if media < 5.0: print("Aluno Reprovado") elif media >= 7.0: print("Aluno Aprovado") else: print("Aluno de Recuperação") Vamos interpretar esse algoritmo? Suponha que um aluno qualquer tenha uma nota média de 5.1. A primeira expressão lógica é falsa porque a média do aluno não é menor que 5.0 e a segunda expressão lógica é falsa porque a média do aluno não é maior ou igual a 7.0, logo o terceiro bloco de instruções será necessariamente executado porque se a média do aluno não é menor que 5.0 e não é maior ou igual a 7.0, então a média dele é entre 5.0 e 6.9, portanto ele está de recuperação. Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 37 69
  • 38. Nós vimos exemplos em que há apenas uma instrução dentro do bloco de cada expressão lógica, mas você pode colocar quantas desejar. Caso tenha apenas uma instrução, pode escrever assim: if media < 5.0: print("Aluno Reprovado") elif media >= 7.0: print("Aluno Aprovado") else: print("Aluno de Recuperação") Lembrando também que você não é obrigado a usar o elif. Caso só haja duas opções, você pode utilizar apenas if e else. Veja só o código abaixo: if idade >= 18: print("Maior de Idade") else: print("Menor de Idade") Se você tiver apenas uma instrução para executar, uma para if e outra para else, poderá colocar tudo na mesma linha conforme apresentado a seguir: if idade >= 18: print("Maior de Idade") else: print("Menor de Idade") Por fim, é importante saber que é possível ter um if dentro de outro if (e assim por diante). Quando isso ocorre, dizemos que temos um if aninhado ou encadeado. if x > 10: print("Número acima de 10!") if x > 20: print("E também acima de 20!") if x > 30: print("E também acima de 30!") else: print("Mas abaixo de 30!") else: print("Mas abaixo de 20!") else: print("Número abaixo de 10!") Estrutura de Repetição (While) INCIDÊNCIA EMPROVA: ALTA Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 38 69
  • 39. Uma das principais características que consolidaram o sucesso na utilização dos computadores para a resolução de problemas foi a sua capacidade de repetir o processamento de um conjunto de operações para grandes quantidades de dados. Exemplos de conjuntos de tarefas que repetimos diversas vezes dentro de uma situação específica podem ser observados invariavelmente no nosso dia a dia. As estruturas de repetição nos fornecem um modo de repetir instruções até que determinado objetivo seja atingido, quando a repetição se encerra. Todas as estruturas de repetição têm em comum o fato de haver uma condição de controle, expressa através de uma expressão lógica, que é testada em cada ciclo para determinar se a repetição prossegue ou não. Em outras palavras, se você manda o computador repetir algo, você tem que dizer quando ele deve parar! Por exemplo: um sistema que vende ingressos para um show deve armazenar em alguma variável a quantidade de ingressos disponíveis. A cada ingresso vendido, esse valor deve ser decrementado e, quando o valor chegar a zero, a venda de ingressos deve ser interrompida uma vez que a carga de ingressos acabou. Há infinitas utilidades e é uma estrutura extremamente comum em qualquer algoritmo de qualquer linguagem de programação. As estruturas de repetição são basicamente duas: while e for. A diferença básica é que a estrutura while é iterada/repetida (em loop) baseada em uma expressão lógica (True ou False) e a estrutura for é iterada/repetida (em loop) baseada em coleções (ou objetos multivalorados). Calma, tudo ficará claro! A estrutura de repetição while avalia uma expressão lógica e só executa os comandos do bloco de instruções se essa expressão for considerada verdadeira. Após a execução dos comandos, a expressão lógica é novamente avaliada. Caso o resultado seja falso, o algoritmo sai da estrutura de repetição (chamada de loop) e segue para a próxima linha: while expressão-lógica: bloco-de-instruções Vamos imaginar um contexto em que um candidato precisa de 100 votos para ser eleito síndico de um condomínio de apartamentos. Vejamos como funciona: voto = 0 while voto < 100: print("Votos Insuficientes") Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 39 69
  • 40. voto = voto + 1 print("Habemus Síndico!") #Imprimirá “Votos Insuficientes” 100 vezes (0 a 99) e, por fim, imprimirá “Habemus Síndico!” Notem que euinicializo a variável voto com valor 0. Em seguida, há uma expressão lógica que avalia se o valorarmazenado navariável é menorque 100.Como inicialmente essaexpressão é verdadeira, executa-se o bloco de instruções imprimindo uma mensagem de “Votos Insuficientes”e incrementando em uma unidade o valor da variável voto. Isso se repete diversas vezes até um momento em que a variável armazenará o valor 99. O que acontece nesse momento? Quando voto = 99, analisamos: 99<100? Sim, isso é verdadeiro! Imprime a mensagem de “Votos Insuficientes” e incrementamos a variável voto em uma unidade, logo voto = 100. Voltamos no loop e analisamos: 100>100? Não, isso é falso! Se é falso, imprime-se a mensagem “Habemus Síndico!”, saímos desse bloco de instruções e prosseguimos com o nosso código normalmente. A variável dentro do bloco de instruções sendo incrementada/decrementada é chamada de contador. Se não houver um contador ou alguma outra forma de escape do nosso bloco de instruções, o algoritmo ficará em repetição para sempre – isso é chamado de loop infinito. Vejam no exemplo apresentado abaixo que – como não há um escape do bloco de instrução – não existe uma condição de saída da estrutura de repetição. Logo, esse bloco de instruções continuará sendo repetido indefinidamente causando problemas de memória ao computador. voto = 0 while voto < 100: print("Eu nunca mais vou sair daqui! MUA-HA-HA-HA-HA") #Esse código imprimirá infinitamente “Eu nunca mais vou sair daqui! MUA-HA-HA-HA-HA” Galera, existe uma outra forma de escapar do loop. Sabe como? Utilizando a declaração break! Essa declaração permite interromper um loop mesmo que a expressão lógica ainda seja verdadeira: contador = 0; while contador < 6: print(contador) if contador == 3: break Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 40 69
  • 41. contador = contador + 1 #Esse código imprimirá 0 1 2 3 Note que o while será executado incrementando o contador normalmente. No entanto, se em algum momento o contador for 3, ele interrompe o loop (break). Da mesma forma que existe um comando específico para parar, há também um comando específico para continuar! Como assim? Por vezes, você não quer que o restante do bloco de instruções seja executado dada determinada condição. Vamos ver um exemplo para ficar mais claro: contador = 0; while contador < 6: contador = contador + 1 if contador == 3: continue print(contador) #Esse código imprimirá 1 2 4 5 6 Notem que, quando contator = 3, o continue esquece tudo que há abaixo dele dentro do bloco de instrução e retorna para a expressão lógica do while, logo não imprime o número 3. Estrutura de Repetição (For) INCIDÊNCIA EMPROVA: média Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 41 69
  • 42. Na estrutura de repetição while, a iteração (loop) era realizada baseado em uma expressão lógica, que poderia ser verdadeira ou falsa. A estrutura de repetição for funciona de maneira um pouco diferente – a iteração é realizada baseado em uma coleção (ou objeto iterável). Logo, a iteração é realizada sobre itens de listas, tuplas, sets, dicionários ou – até mesmo – strings. Vamos ver a sua sintaxe para ficar um pouco mais claro... for variável-de-controle in variavel-colecao bloco-de-instruções Percebam que – em contraste com a estrutura while – não é necessário declarar uma variável de controle antecipadamente porque a própria estrutura necessita de uma variável de controle. listaFrutas = ["maçã", "carambola", "banana"] for x in listaFrutas: print(x) #Imprimirá maçã carambola banana Essa estrutura percorre todos os elementos da lista. O interessante é que isso vale para outras coleções como tuplas e conjuntos – vejam alguns exemplos: TuplaFrutas = ("maçã", "carambola", "banana") for x in TuplaFrutas: print(x) #Imprimirá maçã carambola banana SetFrutas = {"maçã", "carambola", "banana"} for x in SetFrutas: print(x) #Imprimirá maçã carambola banana E o dicionário, Diego? Também funciona! No entanto, vocês devem se lembrar que o dicionário apresenta um conjunto de chave-valor, então você pode escolher apresentar a chave ouo valor: DicioFrutas = {"fruta1": "maçã", "fruta2": "carambola", "fruta3": "banana"} for x in DicioFrutas: print(x) #Imprimirá fruta1 fruta2 fruta 3 DicioFrutas = {"fruta1": "maçã", "fruta2": "carambola", "fruta3": "banana"} for x in DicioFrutas: print(DicioFrutas[x]) #Imprimirá maçã carambola banana Por fim, essa estrutura de repetição também é capaz de iterar sobre uma string. Ora, a string é um conjunto de caracteres, logo é possível iterar sobre cada caractere. Vejam só: for x in "Estratégia Concursos": print(x) #Imprimirá E s t r a t é g i a C o n c u r s o s Note que ele imprimirá letra por letra! Galera, não vou entrar em detalhes porque nós já vimos isso no tópico anterior, mas essa estrutura de repetição também permite utilizar break e continue. É importante mencionar também que essa estrutura também é utilizada frequentemente com a Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 42 69
  • 43. função range( ). Vocês se lembram o que essa função faz? Ela retorna uma sequência de números, começando do 0 (porpadrão), incrementando por 1 (porpadrão) e termina no número especificado. Ela pode ser utilizada em conjunto com a função for para iterar sobre um bloco de instruções por um número específico de vezes. Vamos ver como funciona... for x in range(6): print(x) #Imprimirá 0 1 2 3 4 5 Lembrem-se também que essa função pode ser um pouco mais complexa quando possui todos os seus três parâmetros: start, stop e step. Vejamos... for x in range(2, 20, 3): print(x) #Imprimirá 2 5 8 11 14 17 Note que o for itera sobre o conjunto de valores que se inicia em 2 (incluso) até 20 (não incluso), pulando de três em três unidades. Fechado? Arquivos INCIDÊNCIA EMPROVA: baixíssima Pessoal, nós vimos diversos exemplos em nossa aula de manipulação de dados. No entanto, os dados ou foram inseridos diretamente no código-fonte ou foram inseridos pelo usuário. Ocorre que há outras maneiras de manipular dados no Python! Sabe qual? Por meio de arquivos! É muito útil, por exemplo, saber manipular um arquivo de planilha, um arquivo de imagem, um arquivo de áudio, um arquivo de texto, entre outros. Em nossa aula, vamos nos focar no principal formato de manipulação de arquivos, que são aqueles do tipo texto simples (conjunto de caracteres). Em Python, devemos abrir/criar (open) arquivos antes de usá-los e fechar (close) os arquivos depois que tivermos terminado de utilizá-los – sendo que depois de aberto um arquivo passa a ser considerado um objeto Python de maneira semelhante a outros dados (chamado de objeto file). Vamos começar aprendendo a abrir um arquivo: Sintaxe: open(NomeDoArquivo, Modo) #Permite abrir/criar um arquivo Observação: NomeDoArquivo é uma string que indica o nome/caminho do arquivo no sistema de arquivos do sistema operacional; Modo indica a forma de abertura/uso do arquivo (é opcional). Vamos detalhar um pouco mais essa sintaxe. O comando open permite abrir ou criar um arquivo. Como assim, Diego? Isso dependerá basicamente do modo de uso, isto é, de parâmetros que indicam finalidades e características de manipulação do arquivo. Existem alguns modos de uso apresentados na tabela seguinte para indicar a leitura, escrita, adição e criação de arquivos, mas – antes se prosseguir – nós precisamos entender o conceito de truncagem. O que é isso, Diego? Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 43 69
  • 44. Quando dizemos que um arquivo foi truncado, significa que todo seuconteúdo foi apagado durante a abertura do arquivo. Em outras palavras, truncar é basicamente sobrescrever dados... MODO DE USO significado DESCRIÇÃO ‘r’ READ Esse parâmetro permite abrir umarquivo para leitura a partir de sua posição inicial semque o arquivo seja truncado e retorna um erro caso o arquivo não exista (é o modo default). ‘w’ WRITE Esse parâmetro permite abrir um arquivo para escrita a partir de sua posição inicial após o arquivo ser truncado e, caso o arquivo não exista, ele é criado. ‘a’ APPEND Esse parâmetro permite abrir um arquivo para escrever/adicionar dados a partir de sua posição final sem que o arquivo seja truncado e, caso o arquivo não exista, ele é criado. ‘x’ CREATE Esse parâmetro permite criar um arquivo especificado e, caso o arquivo não exista, ele retorna um erro. Acabou, professor? Não! Há ainda mais três modos de uso especiais que apresentaremos a seguir que adicionam funcionalidades (e, por isso, acompanham o sinal de adição). Vejamos... MODO DE USO significado DESCRIÇÃO ‘r+’ READ/write Esse parâmetro permite abrir um arquivo para leitura e escrita de dados a partir de sua posição inicial sem que o arquivo seja truncado e retorna um erro caso o arquivo não exista. ‘a+’ APPEND/read Esse parâmetro permite abrir umarquivo para escrever/adicionar e ler dados a partirde sua posição final sem que o arquivo seja truncado e, caso o arquivo não exista, ele é criado. ‘w+’ WRITE/read Esse parâmetro permite abrir um arquivo para escrita e leitura de dados a partir de sua posição inicial após o arquivo ser truncado e, caso o arquivo não exista, ele é criado. Eu montei uma tabelinha para facilitar o entendimento de tudo que vimos na tabelinha seguinte em relação à criação, leitura, escrita, truncagem e se é a partir do início ou fim. Vejamos... resumo ‘x’ ‘r’ ‘r+’ ‘w’ ‘w+’ ‘a’ ‘a+’ Criar x x x x x Ler x x x x Escrever x x x x x truncar x x A partirdoinício x x x x A partirdofim x x Acabou, Diego? Ainda não... é possível também especificar se o arquivo deve ser tratado como texto ou binário conforme é apresentado na tabela seguinte: MODO DE USO significado DESCRIÇÃO Diego Carvalho, Raphael Henrique Lacerda Aula 01 TCE-ES (Auditor de Controle Externo - Tecnologia da Informação) Infraestrutura de TI - 2022 (Pós-Edital) www.estrategiaconcursos.com.br 1036962 12225328757 - Elton Barbosa 44 69