Iniciação a Programação

Quem Sou eu?

Daniel Oliveira Araújo

  • Um de muitos de seu nome
  • Programador
  • Ciclista
  • Gosta de vida Bucolica
  • Educador
  • O Anti-Spoiler
  • Nerd

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

E Agora?

Quem são Vocês?

Apresentação

  • Nome?
  • Onde mora?
  • Por que Deseja fazer o curso?
  • Planos para o futuro?
  • Se defina em uma palavra
  • Se defina em uma música

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
  • Linguagem WEB

Material de Apoio

Preencha o seguinte formulário

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

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

Noções de Hardware

Como funciona o computador 

  • Os computadores estão presentes no nosso cotidiano, a cada dia novas pessoas começam a utiliza-los. Mas todos sabem como funciona? Sabem como usá-los?

Componentes

  • Principais componentes de um computador são:
    • Memória
      • ROM
      • RAM
      • Disco Rígido
    • CPU

Memória

  • São todos os dispositivos que permitem a um computador guardar dados, temporária ou permanentemente. Memória é um termo genérico para designar componentes de um sistema capazes de armazenar dados e programas. 

    A unidade básica de memória é o digito binário, ou bit. Um bit pode conter 0 ou 1. É a unidade mais simples possível. Um sistema que armazenasse apenas um destes valores não poderia formar a base de um sistema de memória.

Memória Principal

  • Também chamadas de memória real, são memórias que o processador pode endereçar diretamente, sem as quais o computador não pode funcionar. Estas fornecem geralmente uma ponte para as secundárias, mas a sua função principal é a de conter a informação necessária para o processador num determinado momento; esta informação pode ser, por exemplo, os programas em execução.

Memória Principal

  • Memória RAM: É uma memória de semicondutores, volátil, com acesso aleatório, isto é, palavras individuais de memória são acessadas diretamente, utilizando uma lógica de endereçamento implementada em hardware.
  • Memória ROM: É um tipo de memória que permite apenas a leitura, ou seja, as suas informações são gravadas pelo fabricante uma única vez e após isso não podem ser alteradas ou apagadas, somente acessadas. São memórias cujo conteúdo é gravado permanentemente.

RAM X ROM

Memória Secundária

  • Memórias chamadas de “memórias de armazenamento em massa”, para armazenamento permanente de dados. Não podem ser endereçadas diretamente, a informação precisa ser carregada em memória principal antes de poder ser tratada pelo processador. Não são estritamente necessárias para a operação do computador. São não-voláteis, permitindo guardar os dados permanentemente. Como memórias externas, de armazenamento em massa, podemos citar os discos rígidos como o meio mais utilizado, uma série de discos óticos como CDs, DVDs e Blu-Rays, disquetes, HD e fitas magnéticas.

Disco Rígido

  • Possui a principal função de armazenamento de dados.
  • O conteúdo armazenado nos HDs é persistente, ou seja, não é descartado quando os computadores são desligados.

Winchester

Unidade Central de Processamento - CPU

  • Também conhecida como processador, é a parte de um sistema computacional, que realiza as instruções de um programa de computador, para executar a aritmética básica, lógica, e a entrada e saída de dados. O papel da CPU pode ser comparado ao papel de um cérebro no funcionamento de um computador. Isto é, realiza operações lógicas, cálculos e processamento de dados.

Unidade Central de Processamento - CPU

  • Uma CPU é composta basicamente, pela maioria dos autores, pelos três seguintes componentes:

    • Unidade lógica e aritmética (ULA ou ALU): executa operações lógicas e aritméticas;

    • Unidade de controle: decodifica instruções, busca operandos, controla o ponto de execução e desvios;

    • Registradores: armazenar dados para o processamento.

Microprocessadores

  • A introdução do microprocessador na década de 1970 afetou significativamente a concepção e implementação de processadores.

  • Microprocessadores utilizam circuitos integrados de transistores, alcançando assim as vantagens dos processadores de transistores ao mesmo tempo que economizam espaço, energia e aquecem menos. Por esses motivos, podem também atingir frequências de clock maiores, o que se traduz em mais operações executadas por segundo e, consequentemente, mais velocidade perceptível ao usuário.

Arquitetura Von Neuman

  • É uma arquitetura de computador que se caracteriza pela possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas. Esta arquitetura é um projeto modelo de um computador digital de programa armazenado que utiliza uma unidade de processamento (CPU) e uma de armazenamento ("memória") para comportar, respectivamente, instruções e dados.

Arquitetura Von Neuman

Arquitetura Von Neuman

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 sua chegada a UTD.

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() .

Atividade

  1. Acesse o seguinte link encurtador.com.br/oCDK5

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 '

texto1 * 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)

Funções

Funções

  • O Python disponibiliza diversas funções internas (built-in) como essas, porém você pode criar suas próprias funções. Uma função é como um mini programa dentro de um programa.
def ola():
    print('Hello There!')

Funções com Parâmetros

def ola(nome):
    print('Hello ',nome,' tudo bem?')

Funções com retorno

  • Ao criar uma função usando a instrução def, podemos especificar qual deverá ser o valor de retorno com uma instrução return.
def areaq(lado):
    return lado * lado

None

  • Em Python, há um valor chamado None, que representa a ausência de um valor. None é o único valor do tipo de dado NoneType. (Outras linguagens de programação podem chamar esse valor de null, nil ou undefined.)
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))

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.

Atividade lista

  1. Faça um programa para uma empresa área no qual registre um lista de 15 passageiros e depois mostre essa lista na tela.

Principais funções de String

Método Uso
len(string) Retorna a quantidade de string
string.count('ch') Retorna a quantidade de um determinado caractere.
string.find('ch') Localiza um determinado caractere
string.split() Separar uma string
string.upper() Coloca todas os caracteres em forma de Maiúsculo
string.lower() Coloca todas os caracteres em forma de Minusculo
string.capitalize() Deixar apenas a primeira letra maiúscula de uma string minúscula
string.title() Deixa as letras de cada palavra da string maiúscula.

Manipulação com Arquivos

Manipulação de arquivos

  • Para abrir um arquivo, o Python possui a função open() . Ela recebe dois parâmetros: o primeiro é
    o nome do arquivo a ser aberto, e o segundo parâmetro é o modo que queremos trabalhar com esse arquivo - se queremos ler ou escrever. O modo é passado através de uma string: "w" para escrita e "r" para leitura.

Manipulação de arquivos

arquivo = open('passageiros.txt', 'w')
arquivo.write('Pedro Silva \n')
arquivo.close()

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:
pessoa = {'nome': 'Pedro', 'idade': 25, 'cidade': 'Fortaleza'}
print(pessoa[nome])

Dicionários

  • Para deletar basta usarmos o comando del, ele remove um par chave-valor de um dicionário.
pessoa = {'nome': 'Pedro', 'idade': 25, 'cidade': 'Fortaleza'}
print(pessoa[nome])
del pessoa['idade']
print(pessoa)

Dicionários

  • Para adicionar basta usarmos o seguinte artifício:
pessoa = {'nome': 'Pedro', 'idade': 25, 'cidade': 'Fortaleza'}
print(pessoa[nome])
del pessoa['idade']
print(pessoa)
pessoa['idade'] = 25
print(pessoa)

Métodos keys(), values() e items()

  • São três métodos de dicionário que retornam valores semelhantes a listas contendo as chaves, os valores ou ambos – ou seja, as chaves e os valores –
    do dicionário.
pessoa = {'nome': 'João', 'idade': 25, 'cidade': 'São Paulo'}
print(pessoa[nome])
del pessoa['idade']
print(pessoa)
pessoa['idade'] = 25
print(pessoa)
pessoa.keys()
pessoa.values()
pessoa.items()

Método get()

  • É tedioso verificar se uma chave está presente em um dicionário antes de acessar o valor dessa chave. Felizmente, os dicionários têm um método get() que aceita dois argumentos: a chave do valor a ser obtido e um valor alternativo a ser retornado se essa chave não existir.

Contar Letras

  • Com o Dicionário pyhton podemos contar letras de um determinado caractere de uma maneira mais elegante:

Manipulando Strings

Strings Literais

  • O que acontece se fizermos isso?
nome = 'Python's Bar'
print(nome)

Strings Literais

  • E agora?
nome = "Python's Bar"
print(nome)

Caracteres de escape

  • Um caractere de escape permite usar caracteres que, de outra maneira, não poderiam ser incluídos em uma string. Um caractere de escape é constituído de uma barra invertida (\) seguida do caractere que você deseja incluir na string. (Apesar de ser constituído de dois caracteres, é comum referenciar esse conjunto como um caractere de escape no singular.) Por exemplo, o caractere de escape para aspas simples é \'. Podemos usar isso em uma string que comece e termine com aspas simples.

Caracteres de escape

Caractere de escape Exibido como
\' Aspas simples
\" Aspas duplas
\t Tabulação
\n Quebra ou mudança de linha
\\ Barra invertida

Operadores in e not in com strings

  • Os operadores in e not in podem ser usados com strings, assim como em valores de lista. Uma expressão com duas strings unidas por meio de in ou de not in será avaliada como um booleano True ou False.

JOIN()

  • O método join() é útil quando temos uma lista de strings que devem ser unidas em um único valor de string. O método join() é chamado em uma string, recebe uma lista de strings e retorna uma string. A string retornada corresponde à concatenação de todas as strings da lista passada para o método.
', '.join(['cats', 'rats', 'bats'])
' '.join(['My', 'name', 'is', 'Simon'])

SPLIT()

  • É o inverso de join(), é chamado em um valor de string e retorna uma lista de strings.
'My name is Simon'.split()

Slicing

Slicing

  • Slicing traduzindo ao pé da letra significa fatiar.

  • Slicing é um "conceito" utilizado em Python para o acesso a uma porção de todo.

  • Para fazer um slicing tudo que precisamos é de um tipo de dado que seja iterável, ou seja, que suporte iteração. Dentre os tipos de dados que vimos até agora, os iteráveis são: strings, tuplas, listas e dicionários.

     

Slicing

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

Construtor

Construtor

  • Em Python, alguns nomes de métodos estão reservados para o uso da própria linguagem. Um desses métodos é o __init__() que vai inicializar o objeto. Seu primeiro parâmetro, assim como todo método de instância, é a própria instância. Por convenção chamamos este argumento de self.

     
class Conta:
    def __init__(self, numero, titular, saldo, limite):
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = 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

Herança

class Gerente(Funcionario):
    def __init__(self, senha, qtd_funcionarios):
        super().__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

REESCRITA DE MÉTODOS

  • No Python, quando herdamos um método, podemos alterar seu comportamento. Podemos
    reescrever (sobrescrever, override) este método.

Exemplo

class Funcionario:

    def __init__(self, nome, cpf, salario):
        self._nome = nome
        self._cpf = cpf
        self._salario = salario

    # outros métodos e properties

    def get_bonificacao(self):
        return self._salario * 0.10

Exemplo

class Gerente(Funcionario):

    def __init__(self, senha, qtd_funcionarios):
        super().__init__(nome, cpf, salario)
        self._senha = senha
        self._qtd_gerenciaveis = qtd_gerenciaveis
    
    def get_bonificacao(self):
        return self._salario * 0.15

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.

WEB

A história da internet

O que é internet?

  • É um grande conjunto de redes de computadores interligadas pelo mundo inteiro.
  • Com o propósito de servir progressivamente usuários no mundo inteiro.
  • É uma rede de várias outras redes, que consiste de milhões de empresas privadas, públicas, acadêmicas e de governo, com alcance local e global e que está ligada por uma ampla variedade de tecnologias de rede eletrônica, sem fio e ópticas.
  • A internet traz uma extensa gama de recursos de informação e serviços, tais como os documentos inter-relacionados de hipertextos da World Wide Web (WWW), redes ponto-a-ponto (peer-to-peer) e infraestrutura de apoio a correio eletrônico (e-mails).

Internet

ARPANET

  • Projeto militar americano objetivando conectar os computadores dos seus departamentos de pesquisa.

World Wide Web

  • A Organização Europeia para a Investigação Nuclear (CERN) foi a responsável pela invenção da World Wide Web, ou simplesmente a Web, como hoje a conhecemos. Corria o ano de 1990, e o que, numa primeira fase, permitia apenas aos cientistas trocar dados, acabou por se tornar a complexa e essencial Web.

  • O responsável pela invenção chama-se Tim Berners-Lee, que construiu o seu primeiro computador na Universidade de Oxford, onde se formou em 1976. Quatro anos depois, tornava-se consultor de engenharia de software no CERN .

World Wide Web

  • Em 1989, propôs um projecto de hipertexto que permitia às pessoas trabalhar em conjunto, combinando o seu conhecimento numa rede de documentos. Foi esse projecto que ficou conhecido como a World Wide Web. A Web funcionou primeiro dentro do CERN, e no Verão de 1991 foi disponibilizada mundialmente.

World Wide Web

Navegadores

HTML

  • HTML é uma das linguagens que utilizamos para desenvolver websites. O acrônimo HTML vem do inglês e significa Hypertext Markup Language ou em português Linguagem de Marcação de Hipertexto.

  • O HTML é a liguagem base da internet. Foi criada para ser de fácil entendimento por seres humanos e também por máquinas, como por exemplo o Google ou outros sistemas que percorrem a internet capturando informação.

Tags

  • O HTML é uma linguagem baseada em marcação. Nós marcamos os elementos para mostrar quais informações a página exibe. Por exemplo, um título importante. Aquele título do artigo, da manchete do site, nós marcamos com uma tag/elemento chamado h1.

<h1>Agenda UTD</h1>

Estrutura

<!DOCTYPE html>
<html lang="pt-br" dir="ltr">
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		
	</body>
</html>

Instrução DOCTYPE

  • O DOCTYPE não é uma tag HTML, mas uma instrução especial. Ela indica para o navegador qual versão do HTML deve ser utilizada para renderizar a página. Utilizaremos <!DOCTYPE html> , que indica para o navegador a utilização da versão mais recente do HTML - a versão 5, atualmente.
  • Há muitos comandos complicados nessa parte de DOCTYPE que eram usados em versões anteriores do HTML e do XHTML. Hoje em dia, nada disso é mais importante. O recomendado é sempre usar a última versão do HTML.

Instrução DOCTYPE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">

<html lang="pt-br" dir="ltr">
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		
	</body>
</html>

Tag html

  • Na estrutura do nosso documento, antes de tudo, inserimos uma tag <html> . Dentro dessa tag, é necessário declarar outras duas tags: <head> e <body> . Essas duas tags são “irmãs”, pois estão no mesmo nível hierárquico em relação à sua tag “pai”, que é <html> .

Tag head

  • A tag <head> contém informações sobre nosso documento que são de interesse somente do navegador, e não dos visitantes do nosso site. São informações que não serão exibidas na área do documento no navegador.
  • A especificação obriga a presença da tag de conteúdo <title> dentro do nosso <head> , permitindo especificar o título do nosso documento, que normalmente será exibido na barra de título da janela do navegador ou na aba do documento.

Tag head

  • Outra configuração muito utilizada, principalmente em documentos cujo conteúdo é escrito em um idioma como o português, que tem caracteres como acentos e cedilha, é a configuração da codificação de caracteres, chamado de encoding ou charset.
  • Podemos configurar qual codificação queremos utilizar em nosso documento por meio da configuração de charset na tag <meta> . Um dos valores mais comuns usados hoje em dia é o UTF-8, também chamado de Unicode. Há outras possibilidades, como o latin1, muito usado antigamente.

Tag head

  • O UTF-8 é a recomendação atual para encoding na Web por ser amplamente suportada em navegadores e editores de código, além de ser compatível com praticamente todos os idiomas do mundo.

Tag body

  • A tag <body> contém o corpo do nosso documento, que é exibido pelo navegador em sua janela. É necessário que o <body> tenha ao menos um elemento “filho”, ou seja, uma ou mais tags HTML dentro dele.

Títulos

  • As tags de heading são tags de conteúdo e vão de <h1> a <h6> , seguindo a ordem de importância, sendo <h1> o título principal, o mais importante, e <h6> o título de menor importância.
  • Utilizamos, por exemplo, a tag <h1> para o nome, título principal da página, e a tag <h2> como subtítulo ou como título de seções dentro do documento.

Títulos

<!DOCTYPE html>
<html lang="pt-br" dir="ltr">
	<head>
		<meta charset="utf-8">
		<title>Agenda de Contato</title>
	</head>
	<body>
            <h1>Agenda UTD</h1>
            <h2>Organize os seus contatos para não ficar perdido!</h2>
		
	</body>
</html>

Parágrafos

  • Quando exibimos qualquer texto em nossa página, é recomendado que ele seja sempre conteúdo de alguma tag filha da tag <body> . A marcação mais indicada para textos comuns é a tag de parágrafo.
  • Se você tiver vários parágrafos de texto, use várias dessas tags <p> para separá-los:

Parágrafos

<!DOCTYPE html>
<html lang="pt-br" dir="ltr">
	<head>
		<meta charset="utf-8">
		<title>Agenda de Contato</title>
	</head>
	<body>
            <h1>Agenda UTD</h1>
            <h2>Organize os seus contatos para não ficar perdido!</h2>
            <p>
                Seja bem vindo ao sistema de agenda que irá facilitar a organização do seu dia-a-dia.
            </p>
            <p>
                Esse sistema foi desenvolvido pela turma de Iniciação a Programação do Turno Tarde da Univesidade do Trabalho Digital (UTD).
            </p>
	</body>
</html>

Imagens

Imagens

  • A tag <img> define uma imagem em uma página HTML e necessita de dois atributos preenchidos: src e alt . O primeiro aponta para o local da imagem e o segundo, um texto alternativo para a imagem caso essa não possa ser carregada ou visualizada.

Imagens

<!DOCTYPE html>
<html lang="pt-br" dir="ltr">
	<head>
		<meta charset="utf-8">
		<title>Agenda de Contato</title>
	</head>
	<body>
            <h1>Agenda UTD</h1>
            <h2>Organize os seus contatos para não ficar perdido!</h2>
            <img id="image" src="IMG/icon.png" alt="Imagem de uma agenda" title="Agenda" />
            <img id="logo" src="IMG/logoUTD.png" alt="Logomarca da UTD" title="Universidade do Trabalho Digital">
            <p>
                Seja bem vindo ao sistema de agenda que irá facilitar a organização do seu dia-a-dia.
            </p>
            <p>
                Esse sistema foi desenvolvido pela turma de Iniciação a Programação do Turno Tarde da Univesidade do Trabalho Digital (UTD).
            </p>	
	</body>
</html>

Imagens

  • O HTML 5 introduziu duas novas tags específicas para imagem: <figure> e <figcaption> . A tag <figure> define uma imagem com a conhecida tag <img> . Além disso, permite adicionar uma legenda para a imagem por meio da tag <figcaption> .

Imagens

<figure>
    <img id="image" src="IMG/icon.png" alt="Imagem de uma agenda"/>
    <figcaption>Agenda</figcaption>
</figure>

Listas

  • Não são raros os casos em que queremos exibir uma listagem em nossas páginas. O HTML tem algumas tags definidas para que possamos fazer isso de maneira correta. A lista mais comum é a lista não-ordenada.

Listas

<ul>
    <li>Home</li>
    <li>Cadastrar Contato</li>
    <li>Contatos</li>
</ul>

Listas

<!DOCTYPE html>
<html lang="pt-br" dir="ltr">
	<head>
		<meta charset="utf-8">
		<title>Agenda de Contato</title>
	</head>
	<body>
            <h1>Agenda UTD</h1>
            <h2>Organize os seus contatos para não ficar perdido!</h2>
            <img id="image" src="IMG/icon.png" alt="Imagem de uma agenda" title="Agenda" />
            <img id="logo" src="IMG/logoUTD.png" alt="Logomarca da UTD" title="Universidade do Trabalho Digital">
            <ul>
                <li>Home</li>
                <li>Cadastrar Contato</li>
                <li>Contatos</li>
            </ul>
            <p>
                Seja bem vindo ao sistema de agenda que irá facilitar a organização do seu dia-a-dia.
            </p>
            <p>
                Esse sistema foi desenvolvido pela turma de Iniciação a Programação do Turno Tarde da Univesidade do Trabalho Digital (UTD).
            </p>	
	</body>
</html>

Listas de definição

<dl>
    <dt>HTML</dt>
    <dd>
        HTML é a linguagem de marcação de textos utilizada para exibir textos como páginas na Internet.
    </dd>
    <dt>Navegador</dt>
    <dd>
        Navegador é o software que requisita um documento HTML através do protocolo HTTP e exibe seu conteúdo em uma janela.
    </dd>
</dl>

CSS

Cascading Style Sheets

Cascading Style Sheets

  • Traduzido para o português significa Folha de Estilo em Cascatas. O CSS é fácil de aprender e entender e é facilmente utilizado com as linguagens de marcação HTML.
  • Antigamente, isso era feito no próprio HTML. Se quisesse um título em vermelho, era só fazer:
<h1><font color="red">Agenda UTD</font></h1>

Cascading Style Sheets

  • O CSS é o que dá vida e beleza a páginas e aplicações web, ou seja, uma identidade a nossa aplicação (cores, tamanhos, estilos, efeitos e muito mais). Além disso, ele é responsável por organizar a forma como elementos HTML são ilustrados em nossos monitores, celulares, tablets, TVs, projetores, enfim... até ao imprimirmos uma página HTML, há CSS envolvido. 

Tipografia

  • Da mesma maneira que alteramos cores, podemos alterar o texto. Podemos definir fontes com o uso da propriedade font-family .
  • Por padrão, os navegadores mais conhecidos exibem texto em um tipo que conhecemos como “serif ”. As fontes mais conhecidas (e comumente utilizadas como padrão) são “Times” e “Times New Roman”, dependendo do sistema operacional. Elas são chamadas de fontes serifadas pelos pequenos ornamentos em suas terminações.

Tipografia

body {
    font-family: "Arial", "Helvetica", sans-serif;
}
  • Nesse caso, o navegador verificará se a fonte “Arial” está disponível e a utilizará para renderizar os textos de todos os elementos do nosso documento que, por cascata, herdarão essa propriedade do elemento body .
  • Caso a fonte “Arial” não esteja disponível, o navegador verificará a disponibilidade da próxima fonte declarada, no nosso exemplo a “Helvetica”. Caso o navegador não encontre também essa fonte, ele solicita qualquer fonte que pertença à família “sans-serif ”, declarada logo a seguir, e a utiliza para exibir o texto, não importa qual seja ela.

Google Fonts

  • é uma biblioteca com mais de 800 fontes livres licenciadas, um diretório web interativo para navegar na biblioteca, e APIs para usar convenientemente as fontes através de CSS e Android.

Google Fonts

Alinhamento

  • Uma das propriedades mais simples, porém muito utilizada, é a que diz respeito ao alinhamento de texto: a propriedade text-align .
p{
  text-align: justify;
  text-indent: 50px;
}

Espaçamentos

  • É possivel configurar também uma série de espaçamentos de texto com o CSS
p {
    line-height: 3px; /* tamanho da altura de cada linha */
    letter-spacing: 3px; /* tamanho do espaço entre cada letra */
    word-spacing: 5px; /* tamanho do espaço entre cada palavra */
    text-indent: 30px; /* tamanho da margem da primeira linha do texto */
}

Espaçamento e Margem

  • Padding: é utilizada para definir uma margem interna em alguns elementos (por margem interna queremos dizer a distância entre o limite do elemento, sua borda, e seu respectivo conteúdo).
  • Margin: é bem parecida com a propriedade padding , exceto que ela adiciona espaço após o limite do elemento, ou seja, é um espaçamento além do elemento em si.

Espaçamento e Margem

p {
    padding: 10px 20px 15px 5px;
}
p {
    margin: 10px 20px 15px 5px;
}

Espaçamento e Margem

Seletores

  • Selecionar através da tag, apesar de simples, é uma maneira muito limitada de selecionar. Ás vezes não queremos pegar todos os parágrafos, mas apenas algum determinado.
  • Id: Você pode atribuir um valor id a um elemento e através dele aplicar propriedades visuais. Para isso, o seletor deve iniciar com o caractere "#" seguido do valor correspondente.
  • Class: Você pode atribuir um valor class a um elemento e através dele aplicar propriedades visuais. Para isso, o seletor deve iniciar com o caractere "." seguido do valor correspondente.

Seletores

#header img {
    margin-right: 35px;
    vertical-align: middle;
    width: 94px;
}
.cabecalho img {
    padding-right: 35px;
    vertical-align: middle;
    width: 94px;
}

Links

  • Quando precisamos indicar que um trecho de texto se refere a um outro conteúdo, seja ele no mesmo documento ou em outro endereço, utilizamos a tag de âncora <a>.
<p>
    Visite o site da <a href="https://www.w3schools.com">W3Schools</a>.
</p>

Links

  • Outro uso para a tag de âncora é a demarcação de destinos para links dentro do próprio documento, o que chamamos de bookmark.
     
<p>Mais informações <a href="#info">aqui</a>.</p>

O atributo de destino

  • O targetatributo especifica onde abrir o documento vinculado.

  • _blank - Abre o documento vinculado em uma nova janela ou aba.
  • _self - abre o documento vinculado na mesma janela / aba, uma vez que foi clicado (este é o padrão).
<a href="https://www.w3schools.com/" target="_blank">Visit W3Schools!</a>

The End!

Iniciação a Programação - Turma UTD 2019.1

By pakato

Iniciação a Programação - Turma UTD 2019.1

  • 223