Iniciação a Programação

Quem Sou eu?

Daniel Oliveira Araújo

  • Graduado em Telemática pelo IFCE
  • Instrutor da UTD desde 2016
    • Iniciação à Programação
    • Introdução à Banco de Dados
    • Java com banco de Dados
  • Instrutor E-Jovem entre 2015-2017
  • Instrutor a distância do Projeto MedioTec no IFCE
  • Integrante do educLab

O que é educlab?

educlab

  • O Laboratório de Análise de Dados e Economia da Educação (educLAB) consiste em um programa de extensão da Universidade Federal do Ceará (UFC), nascido a partir de um grupo de estudos em economia da educação.

Alessandra Benevides - Professora adjunto da Universidade Federal do Ceará (UFC), no campus de Sobral. Exerce o cargo de coordenadora do curso de Ciências Econômicas e atua especialmente na área de Economia da Educação com avaliação de políticas públicas. Graduada em jornalismo pela UFC, concluiu o mestrado e o doutorado em Economia pelo Programa de Pós-Graduação em Economia (CAEN/UFC).

Membros Fundadores

George Gomes - Licenciado em filosofia pela Universidade Estadual do Ceará e especialista em Ensino de Filosofia pela Faculdade Farias Brito, é professor da rede estadual na Secretaria da Educação do Ceará (SEDUC) e membro fundador do educLAB. Desenvolve aplicações para o tratamento e análise de bases, dados e informações educacionais, para a produção de relatórios, gráficos e mapas.

MEMBROS FUNDADORES

Rafael Barbosa - Professor adjunto da Universidade Federal do Ceará (UFC), doutor em economia pelo CAEN/UFC. Pesquisa nas áreas de análise de dados, economia da educação e macroeconomia. Pesquisador Junior do Centro de Avaliação de Políticas Públicas do IPECE (CAPP). Membro fundador do educLAB.

MEMBROS FUNDADORES

Zilania Mariano - Professora adjunto da Universidade Federal do Ceará (UFC) e vice coordenadora do curso de ciências econômicas, no campus de Sobral. Doutora em economia pelo CAEN/UFC. Pesquisa nas áreas de avaliação de políticas públicas, economia da educação e mercado de trabalho. Pesquisadora Junior do Centro de Análise de Dados e Avaliação de Políticas Públicas (CAPP/IPECE). 

MEMBROS FUNDADORES

Principais Objetivos

  • Desenvolver pesquisa na área de economia da educação;

  • Realizar projetos que visem contribuir para melhoria da educação em suas mais diversas etapas: ensino fundamental, médio e superior;

  • Capacitar estudantes, docentes e pesquisadores da UFC e de outras instituições em teorias, técnicas e instrumentos de análise de dados educacionais.

SAiba mais

E Agora?

Quem são Vocês?

O que vamos ver no curso

  • Introdução à Lógica
  • Funcionamento do computador
  • Conversão de Valor Binário
  • Algorítimo e Fluxograma
  • Python
    • Variáveis e entrada de dados
    • Funções e procedimentos
    • Listas

Material de Apoio

Conceitos Básicos

Quanto maior a dificuldade, tanto maior o mérito em superá-la.

H. W. BEECHER

Introdução ao sistema de computação

  • O ser humano sempre desenvolveu ferramentas para auxiliar nos seus trabalhos, a roda, a polia, pá, enxada, calculadora são exemplos de ferramentas que hoje evoluiu para a computação.

Computar

  • Fazer cálculos, contar, efetuar operações aritméticas, sendo assim o COMPUTADOR seria um mecanismo que auxilia nesta tarefa.

Ábaco

  • Considerado o primeiro computador, ele foi usado na Babilônia por volta de 2400 a.c, mas também foi utilizados em outras regiões através dos gregos, egípcios, e chineses e demais povos.

Blaise Pascal

  • 1642 Pascal desenvolveu uma calculadora mecânica, ele simulava o funcionamento do ábaco através de rodas dentadas.

Memória

  • Em 1800 foi desenvolvido uma maneira de armazenar informações calculadas, foi criado o cartão perfurado.

Charles Babbage

É mais conhecido e, de certa forma, referenciado como o inventor que projetou o primeiro computador de uso geral, utilizando apenas partes mecânicas, a máquina analítica. Ele é considerado o pioneiro. Seu invento, porém, exigia técnicas bastante avançadas e caras na época, e nunca foi construído. Sua invenção também não era conhecida dos criadores do computador moderno.

Charles Babbage

Lord Byron

Foi um poeta britânico e uma das figuras mais influentes do romantismo. Entre os seus trabalhos mais conhecidos estão os extensos poemas narrativos Don Juan, A Peregrinação de Childe Harold e o curto poema lírico She Walks in Beauty.

Byron é considerado um dos maiores poetas britânicos, e permanece vastamente lido e influente. 

Ada Lovelace

  • Foi uma matemática e escritora inglesa. Hoje é reconhecida principalmente por ter escrito o primeiro algoritmo para ser processado por uma máquina, a máquina analítica de Charles Babbage. Durante o período em que esteve envolvida com o projeto de Babbage, ela desenvolveu os algoritmos que permitiriam à máquina computar os valores de funções matemáticas, além de publicar uma coleção de notas sobre a máquina analítica. Por esse trabalho é considerada a primeira programadora de toda a história.

Ada Lovelace

Computadores eletrônicos

  • Eletronic Numeric Integrator and Calculator (ENIAC), foi o primeiro computador eletônico. O seu desenvolvimento se iniciou em 1943 e foi concluido em 1946. Tinha função de calcular as trajetórias balísticas.
  • O ENIAC tinha em torno de 18 mil válvulas, 70 mil resistores e 10 mil capacitores. Consumia cerca de 150 kW de potência, ocupando uma área de 1400 m².

Alan Turing

  • Foi um matemático, lógico, criptoanalista e cientista da computação britânico. Foi influente no desenvolvimento da ciência da computação e na formalização do conceito de algoritmo e computação com a máquina de Turing, desempenhando um papel importante na criação do computador moderno. Foi também pioneiro na inteligência artificial e na ciência da computação. É conhecido como o pai da computação moderna.

Alan Turing

  • Durante a Segunda Guerra Mundial, Turing trabalhou para a inteligência britânica em Bletchley Park, num centro especializado em quebra de códigos. Por um tempo ele foi chefe do Hut 8, a seção responsável pela criptoanálise da frota naval alemã. Planejou uma série de técnicas para quebrar os códigos alemães, incluindo o método da bomba eletromecânica, uma máquina eletromecânica que poderia encontrar definições para a máquina Enigma.

Alan Turing

Dica de Filme 01

A máquina de Turing

  • É um dispositivo teórico conhecido como máquina universal, concebido muitos anos antes de existirem os modernos computadores digitais. Num sentido preciso, é um modelo abstrato de um computador, que restringe-se apenas aos aspectos lógicos do seu funcionamento (memória, estados e transições), e não a sua implementação física. Numa máquina de Turing pode-se modelar qualquer computador digital.

Sistema de Numeração

Decimal

  • São representados por dez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9 sendo que pode realizar junção destes algarismos para representar números maiores. 

Binário

  • Também conhecido como de base 2, utiliza apenas os algorismos 0 e 1. Neste sistema os algorismo são chamados de dígitos binários ou bits.

Octal

  • O sistema de numeração octal, ou de base 8, utiliza oito algorismo para sua representação (0, 1, 2, 3, 4, 5, 6 e 7).

Hexadecimal

  • O sistema de numeração hexadecimal, ou de base 16, utiliza oito algorismo para sua representação (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E , F).

Sistema de numeração

Bits x Bytes

  • Nas redes de computadores bits e bytes são unidades de dados transmitidos através de conexões de rede. Em outras palavras, podemos dizer que são unidades de medidas digitais. Por exemplo: na costura, a unidade de medida mais comum é centímetro. Na estrada, é quilômetros, nas TV’s, polegadas e nos meios digitais bits e bytes.

Bits

  • O nome “bits” é uma abreviação para dígito binário (binary digit) em inglês, e ele é representado por sequências de 0 e 1. Códigos binários são a linguagem dos computadores e eles representam desde as mais básicas funções, até informações e dados que nós não vemos.

Bytes

  • Assim como 100 centímetros formam 1 metro, 8 bits formam 1 byte. As combinações de 8 bits podem ser as mais diversas e um Byte pode representar um caractere, um número, um espaço ou um símbolo. Esse texto que você está lendo, por exemplo, na linguagem dos computadores apareceria como diversas sequências de zeros e uns, agrupadas de oito em oito.

Cuidado!!!

O que é lógica?

  • Lógica trata da correção do pensamento. Como filosofia, ela procura saber por que pensamos assim e não de outro jeito. Com arte ou técnica, ela nos ensina a usar corretamente as leis do pensamento.
  • Poderíamos dizer também que a Lógica é a arte de pensar corretamente e, visto que a forma mais complexa do pensamento é o raciocínio, a Lógica estuda ou tem em vista a correção do raciocínio.

Lógica no dia a dia

  1. Sei que o livro está no armário
  2. O armário está fechado
  3. Logo, concluo que tenho de abrir o armário para pegar o livro

Vamos brincar

  1. Se o semáforo com a luz vermelha é para o motorista parar e o verde para seguir, estando eu a pé para atravessar a rua então concluo que:
    1. Posso atravessar a rua com a luz vermelha.
    2. O semáforo tem duas luzes
    3. Só devo atravessar a rua com a luz verde

Vamos brincar

  1. Patos são animais. Patos têm duas patas. Logo:
    1. Todo o animal tem duas patas
    2. Patos têm duas patas
    3. Patos tem bico

Torre de Hanoi

Portas Lógicas

Portas Lógicas

  • Todos os circuitos elétricos fazem uso das denominadas "portas lógicas", responsáveis pela representação física da aritmética e expressões binárias. As portas lógicas são consideradas as menores unidades encontradas no computadores, sendo formadas por componentes eletrônicos, em sua maioria transistores.
  • As portas lógicas são dispositivos, ou circuitos lógicos, que possuem um ou mais sinais lógicos de entrada, resultando em apenas uma saída.

Portas Lógicas

  • As portas lógicas trabalham com os onceitos da ágebra booleana, a qual é definida sobre um conjunto de dois elementos, denominados verdadeiro ou falso, ou  0 e 1.

Principais Portas

  • Porta OR (OU) - Executa a soma booleana de duas ou mais entradas binárias.
  • Porta AND (E) - Executa a multiplicação booleana de duas ou mais entradas binárias.
  • Porta NOT - Conhecida como porta inversora, executa o complemento (negação) de uma variável binária, ou seja, um circuito inversor de sinais.
  • Porta XOR (OU Exclusivo) - Representa um circuito que compara as entradas a fim de verificar se uma e somente uma delas é verdadeira.

Principais Portas

A B AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Variavéis

Varavéis

  • São os elementos básicos que um programa manipula. Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado.

  • Estas devem receber nomes para poderem ser referenciadas e modificadas quando necessário. Um programa deve conter declarações que especificam de que tipo são as variáveis que ele utilizará e às vezes um valor inicial.

  • Tipos podem ser, por exemplo: inteiros, reais, caracteres, etc. As expressões combinam variáveis para calcular novos valores, na aula 6 iremos ver mais detalhes e a aplicação das mesmas em uma linguagem de programação.

Tamanho das Variaveis

Algoritmo

O que é algoritmo?

  • Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica.

Exemplo

  • Faça um algoritmo da saída da sala de convivência até a sala de aula da FEAAC.

Tipos de Algoritmos

  • Os tipos de algoritmos mais usados são descrição narrativa, fluxograma e Pseudocódigo ou Portugol.

Descrição Narrativa

  • Utiliza linguagem natural
  • Vantagem: Não é necessário aprender nenhum conceito novo, é como estivéssemos falando ou escrevendo os detalhes de algo para outra pessoa.
  • Desvantagem: Permite várias interpretações, dificultando transcrição para programa.

Ler dois números e calcular a média

  1. Ler os dois números.
  2. Calcular a média.
  3. Mostrar o resultado da média.

Fluxograma

  • Utiliza elementos gráficos, que nos próximos tópicos abordaremos com mais detalhes este assunto.
  • Vantagem: Entendimento de gráficos é mais fácil que de textos.
  • Desvantagem: Necessário aprender simbologia e não apresenta detalhes para transcrever
    para programa.

Fluxograma

Pseudocódigo ou Portugol

  • Utiliza uma linguagem com regras definidas com uma estrutura formal também conhecido como português estruturado.
  • Vantagem: Transcrição para programa (linguagem de computador) é praticamente imediata.
  • Desvantagem: Necessário aprender regras.

Pseudocódigo ou Portugol

Regras para a construção de um algoritmo

  • Usar somente um verbo por frase.

  • Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática.

  • Usar frases curtas e simples.

  • Ser objetivo.

  • Procurar usar palavras que não tenham sentido dúbio.

Fases

  • É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo.

Regras Básicas

  • Não utilizar espaços entre as letras ou caracteres especiais como acentos, símbolos (@#%&*?:/) entre outros.

  • Para identificar um algoritmo com duas palavras, por exemplo “calcular media“ usar o underline o correto ficaria calcular_media.

  • Não utilizar palavras reservadas como as que são utilizadas para representar ações especificas como ler, variavel, escrever no portugol ide as palavras reservadas são destacadas em negrito.

Regras Básicas

  • Não utilizar números no inicio da identificação do algoritmo como, por exemplo; “1exemplo” o correto seria “exemplo1”.

  • Usar nomes coerentes para identificação de algoritmos, nomes os quais possam identificar o que o algoritmo vai fazer.

Corpo do Algoritmo

  • No corpo do algoritmo deve ser escrito todos os passos para a resolução de problemas, como por exemplo;

    • Entrada de valores para as variáveis.

    • Operações de atribuição tais como lógicas e aritméticas.

    • Laços de repetição.

    • Exibição de resultados.

       

Brincadeira de Algoritmo

  1. Escreva um algoritmo que receba 2 números e ao final exiba o resultado da soma, subtração, multiplicação e divisão dos números lidos.
  2. Escreva um algoritmo que receba o ano atual, ano de nascimento de uma pessoa e mostre a sua idade.

Brincadeira de Algoritmo

Fluxograma

Fluxograma

  • É um tipo de diagrama, e pode ser entendido como uma representação esquemática de um processo ou algoritmo, muitas vezes feito através de gráficos que ilustram de forma descomplicada a transição de informações entre os elementos que o compõem, ou seja, é a sequência operacional do desenvolvimento de um processo, o qual caracteriza: o trabalho que está sendo realizado, o tempo necessário para sua realização, a distância percorrida pelos documentos, quem está realizando o trabalho e como ele flui entre os participantes deste processo.

Simbologia

Bricadeira com fluxograma

  • Refaça os exercícios da aula passada no formato de fluxograma.

ESTRUTURAS DE DECISÃO E SELEÇÃO

Comando If

Comando If - Else

Operadores Lógicos

  • Expressões lógicas são aquelas que realizam uma operação lógica (ou, e, não, etc...) e retorna verdadeiro ou falso.

Exemplo

inicio
  inteiro anoAtual
  inteiro anoNasc
  inteiro idade
  logico amigoDono
    
  ler anoAtual
  ler anoNasc
  amigoDono <-verdadeiro
  idade <- (anoAtual - anoNasc)
  
  escrever "A idade é: "
  escrever idade
  escrever "\n"  
  se idade>=18 e amigoDono então
      escrever "Você pode entrar!"
  senão
      escrever "Vá pra casa criatura!!!"""
  fimse
fim

Estrutura de Repetição

Loop

  • Segundo o dicionário Aurélio: "Trecho de programa executado repetidamente um número defi nido de vezes, ou até que uma condição seja satisfeita.”

Exemplo

inicio
    real n1
    real n2
    real m
    inteiro contador <- 1
    
    enquanto contador <=5 faz 
        ler n1
        ler n2
        m <- (n1+n2)/2
        escrever "Aluno "
        escrever contador
        escrever ": "
        escrever m
        contador <- contador+1
    fimenquanto
fim
        

Fluxograma

Conceitos de Programação

Linguagem de programação

  • É um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sobre várias circunstâncias.

Linguagens de Baixo Nível

  • São linguagens totalmente dependentes da máquina, ou seja, o programa que utiliza este tipo de linguagem não pode ser migrado ou utilizado em outras máquinas. Ao estar praticamente desenhado para aquele hardware, aproveitam ao máximo as características do mesmo.

Linguagem de máquina

  • Ordena à máquina as operações fundamentais para seu funcionamento. Consiste na combinação de 0's e 1's para formar as ordens entendíveis pelo hardware da máquina.
  • Esta linguagem é muito mais rápida que as linguagens de alto nível.
  • A desvantagem é que são bastante difíceis de manejar e usar, além de ter códigos fonte enormes onde encontrar uma falha é quase impossível.

Assembler

Linguagens de alto Nível

  • São aquelas que se encontram mais próximas à linguagem natural do que à linguagem de máquina. Estão dirigidas a solucionar problemas mediante o uso da Estruturas Dinâmicas de Dados.
  • São estruturas que podem mudar de tamanho durante a execução do programa. Permitem-nos criar estruturas de dados que se adaptem às necessidades reais de um programa.

Linguagens de alto Nível

nome = input('Digite seu nome:')
print(nome)

Principais Linguagens de Programação

Linguagem C

  • Criada em 1972 nos Bell Telephone Laboratories por Dennis Ritchie com a finalidade de permitir a escrita de um sistema (UNIX), utilizando uma linguagem de alto nível, evitando o Assembly.

Exemplo

 #include <stdio.h> 
        /* Um Primeiro Programa */
        int main ()    
        { 
            printf ("Hello world!\n");
            return(0);
        }

Dennis Ritchie

Por favor não confudir!

Ritchie

Ritchie Valens

Razões para programar C

  • Cobol - Processamento de Registros
  • Pascal - Ensino de Técnicas de Programação
  • Fortran - Cálculo Científico

Dica de Filme 2

Java

  • Java é uma linguagem de programação interpretada orientada a objetos desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferente das linguagens de programação convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não é a sua única linguagem

James Gosling

Exemplo

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        }
    }

C#

  • É uma linguagem de programação interpretada multi-paradigma fortemente tipada, e, possuindo paradigmas de programação imperativa, funcional, declarativa, orientada a objetos e generica C# foi desenvolvida pela Microsoft como parte da plataforma .NET. A sua sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação, como Object Pascal e Java. O código fonte é compilado para Common Intermediate Language (CIL) que é interpretado pela máquina virtual Common Language Runtime (CLR).

Anders Hejlsberg

Exemplo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, world!");
        Console.ReadLine();
    }
    }
}

PHP

  • É uma linguagem interpretada livre, usada originalmente apenas para o desenvolvimento de aplicações presentes e atuantes no lado do servidor, capazes de gerar conteúdo dinâmico na World Wide Web.

Rasmus Lerdorf

Exemplo

<?php
  echo "Hello World!!!"; 
?>

Exemplo

<!DOCTYPE html>
<html>
  <body>
    <h1>É hora do PHP!</h1>
    <?php
      echo "Hello World!!!"; 
    ?>
  </body>
</html>

Python

  • É uma linguagem de programação de alto nível, interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.

Guido van Rossum

Exemplo

print('Hello World')

O nosso curso será de?

Python

Senta que lá vem história

História

  • A linguagem foi criada em 1990 por Guido van Rossum, no Instituto Nacional de Pesquisa para Matemática e Ciência da Computação da Holanda
    (CWI) e tinha originalmente foco em usuários como físicos e engenheiros. O Python foi concebido a partir de outra linguagem existente na época, chamada ABC.

Principais Características

  • Além de ser uma linguagem de alto nível, ela possui uma tipagem dinâmica, é orientada a objetos, permite que o código seja organizado por classes e possui a característica peculiar de utilizar a identação do código para definir a estrutura de dados, ou seja, enquanto outras linguagens utilizam identação para organização do código, em python ela é vital para o correto funcionamento dos scripts.

Interpretador

  • Python é tanto uma linguagem interpretada quanto uma linguagem compilada. Um compilador traduz linguagem Python em linguagem de máquina - código Python é traduzido em um código intermediário que deve ser executado por uma máquina virtual conhecida como PVM (Python Virtual Machine).

Interpretar X Compilar

Interpretar X Compilar

Download

  • Python já vem instalado nos sistemas Linux e Mac OS mas será necessário fazer o download da última versão (Python 3.6). O Python não vem instalado por padrão no Windows e o download deverá ser feito no site https://www.python.org/ 

Objetivos

  • Python é uma linguagem de propósito geral. Muitas vezes precisamos lidar com tarefas laterais: buscar dados em um banco de dados, ler uma página na internet, exibir graficamente os resultados, criar planilhas etc. E Python possui vários módulos prontos para realizar essas tarefas.

Onde a linguagem é usada

Quebrando a maldição

print('Olá, mundo!')

Atividade

  1. Altere o programa para imprimir seu nome.
  2. Altere seu programa para imprimir duas linhas de código utilizando a função print() .

VARIÁVEIS E TIPOS EMBUTIDOS

Função type( )

  • Tem função de identificar se um valor é uma string ou um número inteiro.

String

  • Ao colocarmos um valor dentro de aspas simples ou duplas, o python interpreta como uma string

Números complexos

  • São definidos por dois valores: a parte real e a parte imaginária. É escrito na seguinte forma real + img j

Variáveis

  • Podemos pedir para o Python lembrar de um valor que queiramos utilizar em outro momento do
    programa. O Python vai guardar este valor em uma variável. Variável é um nome que faz referência a
    um valor.
  • Um comando de atribuição (o sinal de igualdade = ) cria uma nova variável e atribui um valor a ela.

Variáveis

mensagem = 'oi, python'
numero = 5
pi = 3.14

print (mensagem)
print (numero)
print (pi)

Nomes de Variáveis

  • Programadores escolhem nomes para variáveis que sejam semânticos e que ao mesmo tempo
    documentem o código. Esses nomes podem ser bem longos, podem conter letras e números.
  • É uma convenção entre os programadores Python começar a variável com letras minúsculas e utilizar o underscore ( _ ) para separar palavras como: meu_nome, numero_de_cadastro, telefone_residencial.
  • Esse padrão é chamado de snake case. Variáveis também podem começar com underscore ( _ ) mas
    deve ser evitado e utilizado em casos mais específicos.

Operadores Aritméticos

Operador Função
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Módulo
// Divisão inteira
** Exponenciação

Concatenação

  • O operador + também funciona com strings de uma maneira diferente dos números. Ele funciona concatenando strings, ou seja, juntando duas strings:
texto1 = 'oi'
texto2 = ' Python'

texto1 + texto2

Concatenação

  • O operador * também funciona com strings, multiplicando seu conteúdo por um inteiro. Vamos
    checar esse resultado:
texto1 = 'Penny'

Penny * 3

Entrada de Dados

  • O Python possui uma função que captura a entrada de valores: a função input() . Quando essa função é chamada, o programa para e espera o usuário digitar alguma coisa. Quando o usuário aperta a tecla ENTER , o programa processa e imprime o valor digitado em forma de string:
entrada = input('Digite qualquer coisa: ')
print(entrada)

Operadores de comparação

  • Não são operadores aritméticos, mas operadores que realizam comparações e retorna um valor booleano.
Operação Descrição
a == b a igual a b
a != b a diferente de b
a < b a menor do que b
a > b a maior do que b
a <= b a menor ou igual a b
a >= b a maior ou igual a b

Operadores de comparação

Operação Descrição
a is b True se a e b são idênticos
a is not b True se a e b não são idênticos
a in b True se a é membro de b
a not in b True se a não é membro de b

Vamos testar

x = [1, 2, 3]
y = [1, 2, 3]

x == y

x is y

Comando if

Comando if

  • Serve para alterar o fluxo de execução de um programa em python baseado no valor, verdadeiro ou falso, de uma expressão lógica.
if chute == numero:
    print('Você acertou')
else:
    print('Você errou')

Comando elif

if (numero_secreto == chute):
    print('Você acertou!')
elif (chute > numero_secreto):
    print('Você errou! O seu chute foi maior que o número secreto')
elif (chute < numero_secreto):
    print('Você errou! O seu chute foi menor que o número secreto')

Laços

While

  • Assim como o if , recebe uma condição, mas no if executa o código apenas uma vez e o while encerra somente no caso que condição seja verdadeira ele encerra
x = 5
while(x > 1):
    print(x)
    x = x - 1

O que poderá acontecer?

x = 5
while(x > 1):
    print(x)

For

  • Uma outra opção de loop é o for, no qual ele automaticamente ele faz incrementos com o auxília da função range
for rodada in range(1,10):
    print(rodada)

Vamos brincar?

Jogo da adivinhação

  • Desenvolva uma aplicação no qual o usuário escreva um número e tente adivinhar o número correto. O usuário terá apenas três tentativas e terá o seguinte retornos:
    • Você acertou
    • Você errou! Você digitou um número maior
    • Você errou! Você digitou um número menor

Estrutura de Dados

Sequências

  • São containers, um tipo de dado que contém outros dados. Existem três tipos básicos de sequência: list (lista) , tuple (tupla) e range (objeto de intervalo). Outro tipo de sequência famoso que já vimos são as strings que são sequências de texto.
  • Sequências podem ser mutáveis ou imutáveis. Sequências imutáveis não podem ter seus valores
    modificados. Tuplas, strings e ranges são sequências imutáveis, enquanto listas são sequências mutáveis.

Listas

  • Listas são coleções de dados em Python que agrupam um conjunto de elementos. Listas podem conter strings, valores numéricos e até mesmo outras listas.
frutas_citricas = ['laranja', 'acerola', 'abacaxi', 'tangerina']
print(frutas_citricas)
numeros_pares = [2,4,6,8,10]
print(numeros_pares)

Máximo e mínimo

  • Podemos verificar o mínimo com min e o máximo com max. Na lista de numeros_pares podemos utilizar essas funções para verificar o seus valores máximo e mínimo:
numeros_pares = [2,4,6,8,10]
print(numeros_pares)

min(numeros_pares)
max(numeros_pares)

Índice

  • Para acessar um valor específico, podemos acessá-lo através do seu índice (posição). O primeiro elemento da lista possui índice 0, o segundo possui índice 1 e assim por diante.  
numeros_pares = [2,4,6,8,10]

print(numeros_pares[3])
print(numeros_pares[1])

Índice

  • Para modificar um valor, basta usar o operador de atribuição em uma determinada posição:
numeros_pares = [2,4,6,8,10]

numeros_pares[3] = 60
numeros_pares[1] = 40

print(numeros_pares[3])
print(numeros_pares[1])

Índice

  • É possível saber o tamanho da lista com a função len e verificar se determinado valor está
    guardado nela com o comando in :
numeros_pares = [2,4,6,8,10]

numeros_pares[3] = 60
numeros_pares[1] = 40

print(numeros_pares[3])
print(numeros_pares[1])

len(numeros_pares)
14 in numeros_pares
60 in numeros_pares

IndexError

  • Aparece quando tentamos acessar um valor em uma lista no qual não existe no indice.
    guardado nela com o comando in :
numeros_pares = [2,4,6,8,10]

print(numeros_pares[3])
print(numeros_pares[6])

Métodos para listas

Método Uso
lista.append(x) Insere o elemento x no final da lista.
lista.insert(i,x) Insere o elemento x na posição i.
lista.extend(L) Insere todos os elementos da lista L no final da lista.
print lista.index(x) Imprime a posição da primeira ocorrência do elemento x na lista.
lista.remove(x) Remove o primeiro elemento cujo valor seja igual a x.

Tuplas

  • Uma tupla é uma lista imutável, ou seja, uma tupla é uma sequência que não pode ser alterada depois de criada. Uma tupla é definida de forma parecida com uma lista com a diferença do delimitador.
    Enquanto listas utilizam colchetes como delimitadores, as tuplas usam parênteses:
dias = ('domingo', 'segunda', 'terça', 'quarta')

Tuplas

  • Como são imutáveis, uma vez criadas não podemos adicionar nem remover elementos de uma tupla. O método append( ) da lista não existe na tupla.
  • Quando é necessário armazenar uma coleção de dados que não pode ser alterada, prefira usar tuplas a listas. Outra vantagem é que tuplas podem ser usadas como chaves de dicionários.

Range

  • É um tipo de seqüência imutável de números e é comumente usado para looping de um número específico de vezes em um comando for já que representam um intervalo. O comando range gera um valor contendo números inteiros sequenciais, obedecendo a sintaxe:
range(inicio, fim)

sequencia = range(1, 3)
print(sequencia)

Range

  • O range não imprime os elementos da sequência, ele apenas armazena seu início e seu final. Para imprimir seus elementos precisamos de um laço for :
for valor in range(1, 3):
    print(valor)

Conjuntos

  • Diferente de uma sequência, é uma coleção não ordenada e que não admite elementos duplicados.
frutas = {'laranja', 'banana', 'uva', 'pera', 'laranja'}

Exemplo

a = set('abacaxi')
b = set('abacate')
print(a)
print(b)
print('A diferença do conjunto A com o conjunto B é: ', a -b)
print('A união do conjunto A com o conjunto B é: ', a | b)
print('A interceção do conjunto A com o conjunto B é: ', a & b)

Dicionários

  • É outra estrutura de dados em Python e seus elementos, como os conjuntos, não são ordenados.
  • São estruturas poderosas e muito utilizadas já que podemos acessar seus elementos através de chaves e não de sua posição. Em outras linguagens este tipo é conhecido como "matrizes associativas".
  • Dicionários são pares de chave-valor não ordenados.

Dicionários

pessoa = {'nome': 'João', 'idade': 25, 'cidade': 'São Paulo'}

Dicionários

  • O que será que acontece se tentarmos acessar seu primeiro elemento?

Dicionários

  • Não é possível acessar um elemento de um dicionário por um índice como na lista. Devemos acessar por sua chave:

Dicionários

  • Para adicionar algum elemento:

Vamos brincar?

Jogo da forca

  • Desenvolva uma aplicação no qual o usuário irá tentar adivinhar a palavra secreta, um jogo chamado de FORCA. Nesse programa deve informar que:
    • Você ganhou
    • Você errou e mostrar quantas tentativas lhe resta

Funções

O que são funções?

  • O conceito de função é um dos mais importantes na matemática. Em computação, uma função é uma sequência de instruções que computa um ou mais resultados que chamamos de parâmetros.
def nome_da_função(parâmetros):
    métodos

Exemplo

def dados(nome, idade=None):
    print('nome:{}'.format(nome))
    
    if(idade is not None):
        print('idade: {}'.format(idade))
    else:
        print('idade não informada')

Função com Retorno

  • No lugar de apenas calcular, uma função pode retornar um valor. No Python, é utilizado o comando return:
def dados(nome, idade=None):
    if(idade is not None):
        return ('nome: {} \nidade: {}'.format(nome, idade))
    else:
        return ('nome: {} \nidade: não informada'.format(nome))

Programação Orientada a Objeto

O que é?

  • Diz respeito a um padrão de desenvolvimento que é seguido por muitas linguagens, como C# e Java.
  • A Programação Estruturada, que era muito utilizada há alguns anos, principalmente com a linguagem C,  cada linha de código é executada após a outra, sem muitos desvios.
  • Na programação orientada a objetos é caracterizado pelo reaproveitamento de códigos.

Classe

  • É a essência da Programação Orientada a Objeto. A classe define a natureza de objeto. Dentro da classe são definidos dados e o código que age sobre eles.
  • Uma classe é um modelo que define a forma de um objeto. ela especifica tanto os dados quanto o código que operará sobre eles. Uma classe é usada pelo python para construir objetos.

Classe

Objeto

Classe

Objeto

Classe

Class Veiculo:
    passageiros: int
    tanque: float
    consumo:float

Objeto

Especificação de um veículo

Fusca

Passageiros: 5

Tanque: 120L

Consumo: 2km/l

Camaro

Passageiros: 2

Tanque: 240L

Consumo: 10km/l

Referência

  • Quando declaramos uma variável para associar a um objeto, na verdade, essa variável não guarda o objeto, e sim uma maneira de acessá-lo, chamada de referência.

Memória

Veiculo

Veiculo

fusca

camaro

Atividade

  1. Dentro da pasta curso_python crie uma pasta(diretório) chamada conta.
  2. crie um arquivo chamado conta.py
  3. Defina a classe conta.
class Conta:
    numero
    titular
    saldo
    limite

Modificadores de Acesso

Métodos de Classe

  • Em linguagens como Java e C# basta declarar que os atributos não podem ser acessados de fora da classe utilizando a palavra chave private. Em orientação a objetos, é prática quase que obrigatória proteger seus atributos com private.
  • Cada classe é responsável por controlar seus atributos, portanto ela deve julgar se aquele novo valor é válido ou não. E esta validação não deve ser controlada por quem está usando a classe e sim por ela mesma, centralizando essa responsabilidade e facilitando futuras mudanças
    no sistema.

Métodos de Classe

  • O Python não utiliza o termo private, que é um modificador de acesso e também chamado de modificador de visibilidade. No Python inserimos dois underscores ('__') ao atributo para adicionar esta característica:
class Conta:
    __numero
    __titular
    __saldo
    __limite

Métodos de Classe

  • O interpretador acusa que o atributo não existe na classe. Mas isso não garante que ninguém possa acessá-lo. No Python não existem atributos realmente privados, ele apenas alerta que você não deveria tentar acessar este atributo, ou modificá-lo. Para acessá-lo, fazemos:
conta.Conta__titular

Modificadores de Acesso

Modificadores Definição
Public Modificador de acesso mais permissivo que existe. Atributos, métodos e classes declarados como public são acessíveis por qualquer classe
Private É o modificador de acesso mais restritivo que existe. Atributos e métodos declarados como private são acessíveis somente pela classe que os declara.
Protected É um modificador de acesso um pouco mais permissivo que o private. Atributos e métodos declarados como protected são acessíveis pela classe que os declara, suas subclasses em outros pacotes e outras classes dentro do mesmo pacote.

Encapsulamento

  • É uma ideia de  'esconder' todos os membros de uma classe, além de esconder como funcionam as rotinas (no caso métodos) do nosso sistema.
  • É fundamental para que seu sistema seja suscetível a mudanças: não precisamos mudar uma regra de negócio em vários lugares, mas sim em apenas um único lugar, já que essa regra está encapsulada.

Getters e setters

  • são usados em muitas linguagens de programação orientada a objetos para garantir o princípio do encapsulamento de dados. O encapsulamento de dados é visto como o agrupamento de dados com os métodos que operam nesses dados. Esses métodos são, obviamente, o getter para recuperar os dados e o setter para alterar os dados.

Getters e setters

def get_saldo(self):
    return self._saldo
def set_saldo(self, saldo):
    self._saldo = saldo
def get_titular(self):
    return self._titular
def set_titular(self, titular):
    self._titular = titular

Property

  • É uma solução mais estilosa do python, no Java recomenda-se que as pessoas usem somente atributos privados com getters e setters, para que possam alterar a implementação sem precisar alterar a interface.

Property

@property
def saldo(self):
    return self._saldo
@saldo.setter
def saldo(self, saldo):
    if(self._saldo < 0):
        print("saldo não pode ser negativo")
    else:
        self._saldo = saldo

Herança e Polimorfismo

Herança

  • Adiciona a capacidade de uma classe filha estender/herdar atributos e métodos de uma classe mãe.

Herança

Classe mãe

Classe filha

Herança

class Gerente(Funcionario):
    def __init__(self, senha, qtd_funcionarios):
        self._senha = senha
        self._qtd_funcionarios = qtd_funcionarios
    def autentica(self, senha):
        if self._senha == senha:
            print("acesso permitido")
            return True
        else:
            print("acesso negado")
            return False

Herança

class Gerente(Funcionario):
    def __init__(self, senha, qtd_funcionarios):
        Funcionario.__init__(nome, cpf, salario)
        self._senha = senha
        self._qtd_funcionarios = qtd_funcionarios
    def autentica(self, senha):
        if self._senha == senha:
            print("acesso permitido")
            return True
        else:
            print("acesso negado")
            return False

Polimorfismo

  • É a capacidade de um objeto poder ser referenciado de várias formas.
  • Na herança, vimos que todo Gerente é um Funcionário, pois é uma extensão deste. Podemos nos referir a um Gerente como sendo um Funcionário. Se alguém precisa falar com um Funcionário do banco, pode falar com um Gerente! Porque? Pois Gerente é um Funcionário. Essa é a semântica da herança.

The End!

Lógica de Programação com Python - Turma 01 educLAB

By pakato

Lógica de Programação com Python - Turma 01 educLAB

  • 249