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

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
  • Linguagem de Programação
    • C
    • Java
    • PHP
  • Introdução à Banco de Dados
  • Linguagem Web

Contato

Contato

  • danieloliveira14@gmail.com
  • https://github.com/Pakato14

Material de Apoio

Antes de iniciarmos a aula Acesse

https://goo.gl/forms/hRtattq6kd2WpN0s2

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

O Jogo da Imitação

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

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

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 de sua chegada para a aula de iniciação digital da 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.

       

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

Brincadeira de Algoritmo

  1. Escreva um algoritmo que receba 2 números e exiba o resultado da sua soma.
  2. Escreva um algoritmo que receba 2 números e ao final exiba o resultado da subtração, multiplicação e divisão dos números lidos.
  3. 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 <=50 faz 
        ler n1
        ler n2
        m <- (n1+n2)/2
        escrever "Aluno "
        escrever contador
        escrever ": "
        escrever m
        m <- contador+1
    fimenquanto
fim
        

Fluxograma

Conceitos de Programação

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.

Liguagem 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.

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.

Linguagem C

Origem

  • 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.

Dennis Ritchie

Por favor não confudir!

Evolução

  • O nome da linguagem resulta da evolução de uma outra linguagem de programação, desenvolvida por Ken Thompson também nos laboratórios Bell, chamada de B.

Cuidado para não confundir!!

  • Não foi o Ken do Street fighter

Razões para programar C

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

 

  • A linguagem C se adapta no desenvolvimento de qualquer projeto, sistemas operacionais, interfaces gráficas, processamento de registros, etc.

Case Sensitive

  • Maiúsculas e minúsculas fazem diferença. Se se declarar uma variável com o nome soma ela será diferente de Soma, SOMA, SoMa ou sOmA

Hello world

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

Compilando no terminal

  • gcc olaMundo.c -o olaMundo.run
  • ./olaMundo.run

Entendendo o Hello world

  •  #include <stdio.h>

 

  • Declarações de funções úteis para entrada e saída de dados (std = standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio = Entrada e saída padronizadas). Toda vez que você quiser usar uma destas funções deve-se incluir este comando.

Entendendo o Hello world

  •  int main()

 

  • Indica que estamos definindo uma função de nome main. Todos os programas em C têm que ter uma função main, pois é esta função que será chamada quando o programa for executado.

Inserindo dados

  • É usado a função scanf(), para inserir dados através do teclado.
#include <stdio.h>
        int main()
        {
            int x;
             scanf("%d",&x);
             printf("O número digitado foi %d\n",x);
             return(0);
                    }

Exibindo dados

  • É usado a função printf(), para exibir dados do seu programa através da tela do computador.
Código Significado
%d Inteiro
%f Float
%c Caractere
%s String
%% Coloca na tela um %

Transformando o algoritmo em programa

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

Melhorando o nosso programa

  1. Na atividade01 informe se o número digitado é par ou impar.
  2. Na atividade02 a subtração deve ser um número positivo e na divisão o divisor ser o menor número.
  3. Na atividade03 o programa será usado na portaria de um bar, verifique a idade do cliente se ele for maior que 18 poderá entrar. Verifique também se ele é amigo do dono do bar.

Controle de Fluxo

For

  • É usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop.
#include <stdio.h>
int main ()
{
	int count;
	for (count=1; count<=100; count++) {
            printf ("%d ",count);
}
	return(0);
}

Loop ifinito

  • Este loop chama-se loop infinito porque será executado para sempre (não existindo a condição, ela será sempre considerada verdadeira), a não ser que ele seja interrompido. Para interromper um loop como este usamos o comando break. O comando break vai quebrar o loop infinito e o programa continuará sua execução normalmente.

Loop ifinito

#include <stdio.h>
int main ()
{
   int Count;
   char ch;
   printf(" Digite uma letra - <X para sair> ");
   for (Count=1;;Count++)
   {
     scanf("%c", &ch);
     if (ch == 'X') break;
     printf("\nLetra: %c \n",ch);
     scanf("%c", &ch);
   }
   return(0);
}

While

  • O comando while testa uma condição, se esta for verdadeira a declaração é executada e faz-se o teste novamente, e assim por diante. Assim como no caso do for, podemos fazer um loop infinito. Para tanto basta colocar uma expressão eternamente verdadeira na condição.

While

#include <stdio.h>
int main ()
{
	int i = 0;
	while ( i < 100)	
	{
        	printf(" %d", i);
		i++;
       	}
	return(0);
}

Switch

  • É próprio para se testar uma variável em relação a diversos valores pré-estabelecidos.
  • A estrutura switch não aceita expressões. Aceita apenas constantes. O switch testa a variável e executa a declaração cujo case corresponda ao valor atual da variável. A declaração default é opcional e será executada apenas se a variável, que está sendo testada, não for igual a nenhuma das constantes.

Switch

#include <stdio.h>
int main ()
{
	int num;
	printf ("Digite um numero: ");
	scanf ("%d",&num);
	switch (num)
        {
        	case 9:
                	printf ("\n\nO numero e igual a 9.\n");
        	break;
        	case 10:
                	printf ("\n\nO numero e igual a 10.\n");
        	break;
        	case 11:
                	printf ("\n\nO numero e igual a 11.\n");
        	break;
        	default:
                	printf ("\n\nO numero nao e nem 9 nem 10 nem 11.\n");
        }
	return(0);
}

Break

  • Ele pode quebrar a execução de um comando (como no caso do switch) ou interromper a execução de qualquer loop (como no caso do for, do while ou do do while). O break faz com que a execução do programa continue na primeira linha seguinte ao loop ou  bloco que está sendo interrompido.

Break

for(t=0; t<100; ++t)
{
	count=1;
	for(;;)
	{
		printf("%d", count);
		count++;
		if(count==10) break;
	}
}

Do-While

  • A estrutura do-while executa a declaração, testa a condição e, se esta for verdadeira, volta para a declaração. A grande novidade no comando do-while é que ele, ao contrário do for e do while, garante que a declaração será executada pelo menos uma vez.

Do-While

#include <stdio.h>
int main ()
{
	int  i;
	do
        {
        	printf ("\n\nEscolha sua fruta favorita pelo numero:\n\n");
        	printf ("\t(1)...Mamao\n");
        	printf ("\t(2)...Abacaxi\n");
        	printf ("\t(3)...Laranja\n\n");
        	scanf("%d", &i); 
        } while ((i<1)||(i>3));

	switch (i)
        {
        	case 1:
                	printf ("\t\tVoce escolheu Mamao.\n");
        	break;
        	case 2:
                	printf ("\t\tVoce escolheu Abacaxi.\n");
        	break;
        	case 3:
                	printf ("\t\tVoce escolheu Laranja.\n");
        	break;
        }
	return(0);
}

Java

O que é Java

  • Java é uma linguagem de programação desenvolvida pela SUN (Hoje pertencente a Oracle) com o objetivo de manter o poder
    computacional de C++, agregando características de segurança, robusteza e portabilidade.

 

  • A linguagem é orientada a objetos, fortemente tipada, independente de arquitetura, robusta, segura, portável, bem estruturada, suporta programação distribuída, multithreaded e conta com garbage collection.

Origem

  • Java foi desenvolvido por James Gosling lider do projeto Green Team da Sun Microsystems , projeto este responsável pelas inovações tecnológicas da empresa.

 

  • O time teve a ideia de criar um interpretador para pequenos dispositivos, facilitando a reescrita de softŸware para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo.

Origem

Desenvolvimento

  • Desenvolver software para aparelhos eletrônicos não deu muito certo. 
  • Tentaram fechar diversos contratos com grandes fabricantes de eletrônicos, como Panasonic, mas não houve êxito devido ao conflito de interesses e custos.
  • Com o advento da web, a Sun percebeu que poderia utilizar a ideia para rodar pequenas aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas operacionais e browsers, e com isso seria grande vantagem poder programar numa única linguagem, independente da plataforma.

Applets

  • Applet: é um pequeno software que executa uma atividade específica, dentro de outro programa, geralmente como um Plugin. Geralmente têm algum tipo de interface de usuário ou fazem parte de uma destas dentro de uma página web.
  • Os Applets Java podem rodar em um web browser usando uma JVM (Java Virtual Machine).
  • Applets em Java podem adicionar recursos que não são possíveis em HTML.
  • Comparando com o Javascript, as applets Java possuem a vantagem de serem independentes do Sistema Operacional, Por outro lado são processados mais lentamente.

Problemas

Código binário para windows

Código binário para linux

Sistema Operacional Windows

Sistema Operacional Linux

Problemas

  • As aplicações se utilizam das bibliotecas do sistema operacional, como, por exemplo, a de interface gráfica para desenhar as “telas”. A biblioteca de interface gráfica do Windows é bem diferente das do Linux: como criar então uma aplicação que rode de forma parecida nos dois sistemas operacionais? 
  • O Java utiliza do conceito de máquina virtual, onde existe, entre o sistema operacional e a aplicação, uma camada extra responsável por “traduzir” o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional onde ela está rodando no momento

Máquina virtual

Código binário para Windows

Código binário para linux

Máquina Virtual Java

Sistema Operacional Windows

Sistema Operacional Linux

Máquina virtual

  • Dessa forma, a maneira com a qual você abre uma janela no Linux ou no Windows é a mesma: você ganha independência de sistema operacional. Ou, melhor ainda, independência de plataforma em geral: não é preciso se preocupar em qual sistema operacional sua aplicação está rodando, nem em que tipo de máquina, configurações, etc.
  • Sua aplicação roda sem nenhum envolvimento como sistema operacional! Sempre conversando apenas com a Java Virtual Machine (JVM).
  • A JVM, ela pode decidir onde é melhor alocar a memória, entre outros. Uma JVM isola totalmente a aplicação do sistema operacional. Se uma JVM termina abruptamente, só as aplicações que estavam rodando nela irão terminar: isso não afetará outras JVMs que estejam rodando no mesmo computador, nem afetará o sistema operacional.

Write once, run anywhere 

Escreva uma vez, execute em qualquer lugar

Ambientes e ferramentas de Desenvolvimento Java

  • A tecnologia java fornece como ambiente de desenvolvimento um grande conjunto de ferramentas que engloba: um compilador, um interpretador, um gerador de documentação, ferramenta de empacotamento de classes de arquivos e outros

Java Runtime Evironment (JRE)

  • Ambiente de execução Java, formado pela JVM e bibliotecas, tudo que você precisa para executar uma aplicação Java

Java Virtual Machine (JVM)

  • É a máquina virtual Java, ela é instalada junto com a JRE

Java Development Kit (JDK)

  • É um pacote para desenvolvedores programarem suas aplicações em Java, possuindo vários utilitários, inclusive compilador e bibliotecas.

Meu primeiro programa

  • Para compilar e executar um programa Java, devemos construir um arquivo com o código fonte que deve ter uma extensão .java. Em seguida um arquivo .class é gerado. Este arquivo é um bytecode  no qual será lido e executado pela máquina virtual (JVM).

Meu primeiro programa

Verificar se o java está instalado

javac -version
  • Abra o Teminal de seu computador e digite o comando abaixo:
java -version
  • Para verificar a versão da máquina virtual, digite o comando abaixo:

Meu primeiro programa

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

Meu primeiro programa

  1. Salve o arquivo como HelloWorld.java
  2. Abra o terminal e execute o seguinte comando javac HelloWorld.java
  3. Se não aconteceu nada é porque funcionou não se preocupe
  4. Em seguida execute o seguinte comando no terminal java HelloWorld
  5. Observe o Resultado

Operadores e Variáveis

Operadores

  • Produzem novos valores a partir de um ou mais valores. O resultado da maioria das operações é um valor booleano ou numérico.

Operadores de comparação

  • São utilizados dois operadores de comparação(chamados também de operadores de igualdade ou desigualdade) que compara dois itens semelhantes e retornam um valor booleano que representa o que é verdadeiro sobre os dois itens serem iguais.

Operadores de comparação

int x = 21;
int y = 21;

if(x == y){
    System.out.println("O Valor de x é igual ao valor de Y");
}

Incremento e Decremento

  • São os operadores que nos permitem incrementar as variáveis em uma unidade. Podem ser usados diante ou atrás da variável dependendo das necessidades, ou seja, se precisarmos que se incremente ou vice-versa antes de utilizar ou o contrário.

Incremento e Decremento

int x = 5;
int y = 7

++x;
System.out.println("Pré incremento");

x++;
System.out.println("Pós incremento");

--y;
System.out.println("Pré decremento");

y--;
System.out.println("Pós decremento");

Atividade

  • Digite o código abaixo e execute, em seguida,  observe o resultado:
public class Incremento {
    public static void main(String[] args) {
        int x = 5;
        int y = 7;

        ++x;
        System.out.println("O Valor de X no pré incremento é: "+x);

        x++;
        System.out.println("O Valor de X no pós incremento é: "+x);
        
        --y;
        System.out.println("O Valor de Y no pré deremento é: "+y);
        
        y--;
        System.out.println("O Valor de Y no pós decremento é: "+y);
        }
    }

Declarando e usando variáveis

  • Podemos declarar variáveis e usá-las. Em Java, toda variável tem um tipo que não pode ser mudado, uma vez que declarado:
tipoDaVariavel nomeDaVariavel;

int idade;

idade = 15;

System.out.println(idade);

Tipos Primitivos

  • A linguagem Java utiliza oito tipos primitivos de dados e um tipo especial. Esses tipos primitivos podem ser utilizados para declarar constantes ou variáveis utilizadas em programas Java. Os tipos primitivos estão divididos em quatro categorias:
  • Lógicos
  • Textuais
  • Numéricos inteiros
  • Numéricos de ponto flutuante.

Tipos Primitivos

Números inteiros

  • Números inteiros podem ser escritos nos formatos binário, octal, decimal e hexadecimal. A representação de um número em cada um desses formatos é uma sequência composta por um ou mais dígitos.
  • Para utilizar o formato binário, devemos acrescentar o prefixo 0b ou o prefixo 0B.
  • Para usar o formato octal, devemos acrescentar o prefixo 0.
  • Para utilizar o formato hexadecimal, devemos acrescentar o prefixo 0x ou o prefixo 0X.
  • Qualquer outra sequência formada por dígitos de 0 a 9 estará no formato decimal.

Números inteiros

int dia, mes, ano;

//dia 14
dia = 0b1110;

//mês 06 (junho)
mes = 0x6;

//ano de 1982
ano = 1982;

Números inteiros

  • Por padrão, os valores literais inteiros são considerados valores do tipo int . Para definir um valor literal inteiro do tipo long , devemos utilizar o sufixo L (éle maiúsculo) ou l (éle minúsculo).
// valor literal inteiro do tipo long
long a = 2147483648 L ;

Números reais

  • Por padrão, os valores literais reais são considerados valores do tipo double . Para definir um valor literal real do tipo float , devemos utilizar o sufixo F (éfe maiúsculo) ou f (éfe minúsculo).
// valor literal real do tipo float
float a = 19.09F;
float b = 19.09f;

Criando Programas Java

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

Casting

Casting e Promoção

  • Alguns valores são incompatíveis se você tentar fazer uma atribuição direta. Enquanto um número real costuma ser representado em uma variável do tipo double, tentar atribuir ele a uma variável int não funciona.

Teste

double d = 3.1415;
int i = d;

//Será que compila??

double d = 5; 
int i = d;

// E agora?

int i = 5;
double d2 = i;

Moldado

  • Às vezes, precisamos que um número quebrado seja arredondado e armazenado num número inteiro. Para fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (casted) como um número inteiro. Esse processo recebe o nome de casting.

Casting

double d3 = 3.14;
int i = (int) d3;

long x = 10000;
int i = (int) x;

Casting Possíveis

Inserir dados

Classe Scanner

  • Para facilitar a entrada de dados em um programa java. É utilizado a classe Scanner. 
Scanner input = new Scanner(System.in);

String nome;
int idade;
				
System.out.println("Digite o seu nome: ");
nome = input.nextLine(); // armazena o primeiro número digitado pelo usuário
		
System.out.println("Digite a sua idade: ");
idade = input.nextInt(); // armazena o primeiro número digitado pelo usuário
		

Classe Scanner

  • A classe Scanner apareceu a partir do java 5. Antes disso era complicado inserir informações.
  • Para usar a Classe Scanner, deve-se importar-la, pois ela faz parte da biblioteca java.
import java.util.Scanner;

Classe Scanner

  • O objeto System.in faz a leitura do que se escreve no teclado.
  • Para tipo de variável existe um método diferente.
Tipos de variáveis Métodos
float numF input.nextFloat();
int num1 input.nextInt();
byte byte1 input.nextByte();
long lg1 input.nextLong();
boolean b1 input.nextBoolean();
double num2 input.nextDouble();
String nome input.nextLine();

Exemplo

import java.util.Scanner;

public class Cadastro {

	public static void main(String[] args) {
		//cria un Scanner para obter entrada a partir da janela de comando
		Scanner input = new Scanner(System.in);
		
		String nome;
		int idade;
				
		System.out.println("Digite o seu nome: ");
		nome = input.nextLine(); // armazena o primeiro número digitado pelo usuário
		
		System.out.println("Digite a sua idade: ");
		idade = input.nextInt(); // armazena o primeiro número digitado pelo usuário
		
		System.out.println("A idade de "+nome+" é "+idade+" anos.");

	}

}

Instruções de Controle

Controle de fluxo

  • As estruturas de controle definem a sequência de execução das instruções. Podem ser divididas em seleção, repetição e sequência. 

Comando If

  • Serve para alterar o fluxo de execução de um programa em Java baseado no valor, verdadeiro ou falso, de uma expressão lógica.

Comando If

  • Se a expressão condicional for verdadeira o bloco de comandos será executado, caso contrário o programa será encerrado.

Comando If-Else

  • Se a expressão condicional for verdadeira o bloco de comandos será executado, caso contrário outro bloco de comando é executado.

Comando If-Else-If

  • As expressões condicionais são avaliadas de cima para baixo. Assim que uma condição verdadeira é encontrada, a instrução associada a ela é executada e o resto é ignorado. Se nenhuma das condições for verdadeira, a instrução else final será executada.

Comando Switch

  • A instrução Switch fornece uma ramificação com vários caminhos. Logo, ela permite que o programa faça uma seleção entre várias alternativas. Embora uma série de instruções if aninhadas possam executar testes com vários caminhos, em muitas situações, switch é uma abordagem eficiente.

Comando For

  • A ideia é a mesma do while: fazer um trecho de código ser repetido enquanto uma condição continuar verdadeira. Mas além disso, o for isola também um espaço para inicialização de variáveis e o modificador dessas variáveis. Isso faz com que fiquem mais legíveis, as variáveis que são relacionadas ao loop.

Comando While

  • O while é um comando usado para fazer um laço (loop), isto é, repetir um trecho de código algumas vezes. A ideia é que esse trecho de código seja repetido enquanto uma determinada condição permanecer verdadeira.

Atividade

  1. Imprima todos os números de 150 a 300.
  2. Imprima a soma de 1 até 1000.
  3. Imprima todos os múltiplos de 3, entre 1 e 100.
  4. Imprima os primeiros números da série de Fibonacci até passar de 100. A série de Fibonacci é a seguinte: 0, 1, 1, 2, 3, 5, 8, 13, 21, etc... Para calculá-la, o primeiro elemento vale 0, o segundo vale 1, daí por diante, o n-ésimo elemento vale o (n-1)-ésimo elemento somado ao (n-2)-ésimo elemento (ex: 8 = 5 + 3).

Programação Orientada a Objetos

Classe

  • É a essência do Java. Ela é a fundação na qual toda a linguagem Java se estrutura, pois 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 java para construir objetos.

Classe

Objeto

Classe X Objeto

Classe

public class Veiculo{
    int passageiros;
    int tanque;
    int consumo;
}

Objeto

  • Uma definição de classe cria um novo tipo de dado. Uma declaração class é só uma descrição de tipo, ela não cria um objeto real.
  • Para criarmos um objeto devemos usar a seguinte instrução:
public class Programa{
    public static void main(String[] args) {
        Veiculo fusca = new Veiculo();
    }
}

Objeto

  • Todos os objetos terão uma cópia de cada variável de instância definida pela classe.
  • Para acessar essas variáveis, vocẽ usará o operador ponto (.). Ele vincula o nome de um objeto ao nome de um membro.
fusca.passageiros = 5;

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.
public static void main(String args[]) {
    Veiculo fusca;
    fusca = new Veiculo();

    Veiculo camaro;
    camaro = new Veiculo();
}

Referência

Memória

Veiculo

Veiculo

fusca

camaro

Referência

class Programa {
    public static void main(String args[]) {

    Veiculo fusca = new Veiculo();
    fusca.passageiros = 5;

    Veiculo camaro = fusca; // linha importante!
    camaro.passageiros = 2;

    System.out.println(fusca.passageiros);
    System.out.println(camaro.passageiros);
    }
}

Referência

Memória

Veiculo

fusca

camaro

Métodos

  • Declararemos o que cada conta faz e como isto é feito - os comportamentos que cada classe tem, isto é, o que ela faz.
  • Os métodos são sub-rotinas que tratam os dados definidos pela classe e, em muitos casos, dão acesso a esses dados. Quase sempre, outras partes do programa interagem com uma classe por seus métodos.

Métodos

public class Veiculo{
    int passageiros;
    int tanque;
    int consumo;

    //Autonomia
    void autonomia(){
        System.out.println("A autonomia do carro é: "+tanque*consumo);
    }
}

Métodos

class Programa{
    public static void main(String args[]){

        Veiculo fusca = new Veiculo();
        Veiculo camaro = new Veiculo();

        fusca.passageiros = 5;
        fusca.tanque = 120;
        fusca.consumo = 2;

        camaro.passageiros = 2;
        camaro.tanque = 240;
        camaro.consumo = 10;

        System.out.println("O veiculo tem capacidade de "+fusca.passageiros+" passageiros.");
        fusca.autonomia();
        System.out.println("O veiculo tem capacidade de "+camaro.passageiros+" passageiros.");
        camaro.autonomia();
    }
}

Métodos com retorno

  • Embora não sejam raros métodos com tipo de retorno void, a maioria dos métodos retorna um valor. Na verdade, a possibilidade de retornar um valor é um dos recursos mais úteis dos métodos.
  • Os valores de retorno são usados para vários fins em programação. Em alguns casos, o valor de retorno contém o resultado de um cálculo.

Métodos com retorno

public class Veiculo{
    int passageiros;
    int tanque;
    int consumo;

    //Autonomia
    int autonomia(){
        return tanque * consumo;
    }
}

Métodos com retorno

class Programa{
    public static void main(String args[]){

        Veiculo fusca = new Veiculo();
        Veiculo camaro = new Veiculo();
        
        int autonomia1, autonomia2;

        fusca.passageiros = 5;
        fusca.tanque = 120;
        fusca.consumo = 2;

        camaro.passageiros = 2;
        camaro.tanque = 240;
        camaro.consumo = 10;

        System.out.println("O veiculo tem capacidade de "+fusca.passageiros+" passageiros.");
        autonomia1 = fusca.autonomia();
        System.out.println("O veiculo tem autonomia de "+autonomia1);
        System.out.println("O veiculo tem capacidade de "+camaro.passageiros+" passageiros.");
        autonomia2 = camaro.autonomia();
        System.out.println("O veiculo tem autonomia de "+autonomia2);
    }
}

Usando parâmetros

  • Podemos passar um ou mais valores para um método quando ele é chamado. Lembre-se de que um valor passado para um método se chama argumento. Dentro do método, a variável que recebe o argumento se chama parâmetro. Eles são declarados dentro dos parênteses é a mesma usada para variáveis.
  • Um parâmetro faz parte do escopo de seu método e, exceto pela tarefa especial de receber um argumento, ele age como qualquer variável local.

Usando parâmetros

double abastecer(int distancia){
    return (double) distancia / consumo;
}

Atividade

  1. Crie um projeto chamado EscolaNoite
  2. Crie uma classe chamado Aluno
  3. Na classe Aluno declare as seguintes variáveis:
    • String nome;
    • char sexo;
    • int idade;
  4. Crie uma classe Programa, sendo que ela terá o método principal.
  5. Crie o objeto aluno e defina as seguintes atribuições:
    • nome, sexo e idade
  6. Desenvolva um método que insira quatro notas e retorne a média e o resultado final

Arrays

Imaginemos o seguinte problema

  • Faremos a seguinte declaração de variáveis
int idade1;
int idade2;
int idade3;
int idade4;
  • Isso pode se tornar um problema quando precisamos mudar a quantidade de variáveis a serem declaradas de acordo com um parâmetro.

Vetor Array

  • Uma array é sempre um objeto, portanto, a variável idades é uma referência.
int[] idades;
  • Criando um objeto-array
idades = new int[10];

//acessando a posição do array

idades[5] = 10;

Entendendo melhor

Erro de exception

  • No Java, os índices do array vão de 0 a n-1, onde n é o tamanho
    dado no momento em que você criou o array. Se você tentar acessar uma posição fora desse alcance, um erro ocorrerá durante a execução.

Percorrer um array

public static void main(String args[]) {
    int[] idades = new int[10];
    for (int i = 0; i < 10; i++) {
        idades[i] = i * 10;
    }
    for (int i = 0; i < 10; i++) {
        System.out.println(idades[i]);
}
}

Enhanced-for

public static void main(String args[]) {
    int[] idades = new int[10];
    for (int i = 0; i < 10; i++) {
        idades[i] = i * 10;
    }
    // imprimindo toda a array
    for (int x : idades) {
        System.out.println(x);
    }
}

Atividade

public class MinMax{
    public static void main(String args[]) {
        int nums[] = new int[10];
        int min, max;

        nums[0] = 99;
        nums[1] = -10;
        nums[2] = 100123;
        nums[3] = 18;
        nums[4] = -978;
        nums[5] = 5623;
        nums[6] = 463;
        nums[7] = -9;
        nums[8] = 287;
        nums[9] = 49;

        min = max = nums[0];

        for(int i = 1; i <10; i++){
            if(nums[i] < min){
                min = nums[i];
                }
            if(nums[i] < max){
                max = nums[i];
                }
            }
        System.out.println("O número mínimo é: "+min);
        System.out.println("O número máximo é: "+max);

    }
}

Atividade

  1. Baseado na atividade anterior altere o código para que o usuário digite 5 números e deste seja encontrado o menor e o maior.

Construtor

Construtor de uma classe

  • O construtor da classe é um bloco declarado com o mesmo nome que a classe.
  • Quando usamos a palavra chave new, estamos construindo um objeto. Sempre quando o new é chamado, ele executa o construtor da classe.
  • Um construtor pode receber um argumento, podendo assim inicializar algum tipo de informação.

Construtor de uma classe

public class Professor {
        String nome;
	String disciplinas;
	int qtdTurmas;
	
	//construindo construtor
	Professor(String nome, String disciplinas){
		this.nome = nome;
		this.disciplinas = disciplinas;		
	}

    }

Construtor de uma classe

public static void main(String[] args) {

	Professor p1 = new Professor("Ambrósio Polidório", "Introdução a Programação");
	p1.qtdTurmas = 2;

        System.out.println("Nome: "+nome);
        System.out.println("Disciplinas: "+disciplinas);
        System.out.println("Quantidade de Turmas: "+qtdTurmas);

	}

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

Classe filha

public class Funcionario {
	String nome;
	char sexo;
	int idade;
	String formacao;
	String cargo;
	int tempoCarreira;
	double salario;
	}

Herança

Classe filha

public class Professor extends Funcionario{
	String disciplinas;
	int qtdTurmas;
	
	//construindo construtor
	Professor(String nome, String disciplinas){
		this.nome = nome;
		this.disciplinas = disciplinas;		
	}
	
	void mostrarFuncionario(){
		System.out.println("Nome: "+nome);
		System.out.println("Idade: "+idade);
		System.out.println("Formação: "+formacao);
		System.out.println("Cargo: "+cargo);
		System.out.println("Disciplina: "+disciplinas);
		System.out.println("Quantidade de Turmas: "+qtdTurmas);
		System.out.println("Tempo de Carreira: "+tempoCarreira);
		System.out.println("---------------------------------");
	}

}

Herança

  • Dizemos que a classe Professor herda todos os atributos e métodos da classe mãe, no nosso caso, a Funcionario. Para ser mais preciso, ela também herda os atributos e métodos, porém não consegue acessá-los diretamente.

Uma classe pode ter várias filhas, mas pode ter apenas uma mãe, é a chamada herança simples do java.
 

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.

Polimorfismo

public static void main(String[] args) {

	Funcionario p1 = new Professor("Ambrósio Polidório", "Introdução a Programação");
	p1.qtdTurmas = 2;

        System.out.println("Nome: "+nome);
        System.out.println("Disciplinas: "+disciplinas);
        System.out.println("Quantidade de Turmas: "+qtdTurmas);

	}

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

O que é 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

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

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

Dimensões

  • É possível determinar as dimensões de um elemento.
img{
    height: 300px;
    witdth: 300px;
}

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;
}

Semântica

HTML semântico

  • Um HTML semântico é tão importante que, em sua última atualização, a linguagem HTML incluiu diversas novas tags cujo único propósito é permitir uma marcação mais semântica para nossas páginas!

HTML semântico

  • <main>: conteúdo principal da página
  • <header>: cabeçalho da página ou de uma região dela
  • <footer>: mesma ideia da tag <header> para o rodapé
  • <aside>: conteúdo auxiliar ao conteúdo principal, como links relacionados ao conteúdo
  • <article>: conteúdo que, por si só, já tem um sentido completo, como um post de um blog ou uma notícia
  • <section>: parte/seção de uma página ou texto

Âncora

  • A tag âncora <a>, é responsável por criar um hiperligação entre uma outra página web
<ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="cadastro.html">Cadastrar Contato</a></li>
    <li><a href="listaContato.php">Contatos</a></li>
</ul>

JavaScript

JavaScript

  • Desenvolvida pela NETSCAPE, a linguagem JavaScript foi criada para trabalhar com aplicações interativas nas páginas HTML. Originalmente batizada de LiveScript.
  • Esta linguagem teve sua primeira versão desenvolvida para o browser Netscape Navigator 2.0 e em seguida, atribuído também ao Internet Explorer 3.0.

JavaScript

  • Conhecida também como uma extensão da linguagem HTML (Linguagem de Marcação de Hipertexto), os comandos JavaScript são embutidos nas páginas HTML e interpretados pelo Browser, ou seja, o JavaScript não possui nenhum procedimento de compilação.

JavaScript

  • Após 20 anos do seu lançamento, ela cresceu absurdamente na comunidade de desenvolvedores, tornou-se mais robusta, poderosa e é usada em uma infinidade de aplicações de alto nível, tanto no front-end quanto no back-end das aplicações. Ela é a tecnologia por trás de ferramentas, frameworks e bibliotecas consagradas no mercado, tais como: Angular, Ember, React, Backbone, jQuery, Grunt... A lista é
    enorme. Atualmente, é essencial que um profissional de TI tenha domínio desta tecnologia, tanto para aplicações web, aplicativos mobile e/ou desktop.

Orientação à Objetos

  • Diferente da Linguagem HTML, a linguagem JavaScript corresponde a programação orientada a objetos, isto significa que todos os elementos de uma página da Web são tratados como objetos.

Luz, Câmera , Interação

  • HTML - Fornece Estrutura
  • CSS - Adiciona o estilo
  • JavaScript - Dinamiza sua página web

Hello World

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <title>
            Hello, World
        </title>
          <head>
        <meta charset="utf-8">
        <script type="text/javascript">
            alert("Hello, World!");
        </script>
    </head>
    <body>
    </body>
</html>
    
    

Hello World

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <title>
            Hello, World
        </title>
          <head>
        <meta charset="utf-8">
        <script type="text/javascript">
            function hello(){
                var msg = "Hello, World!";
                document.open();
                document.write(msg);
                document.close();
                }
        </script>
    </head>
    <body onload="hello()">
        <h1>Hi</h1>
    </body>
</html>
    
    

O que é PHP

  • É umas da linguagens mais utilizadas no mundo Web.
  • Há mais de 10 milhões de sites que usam PHP.
  • A principal diferença em relação as outras linguagens é a capacidade de interagir com a Web.

Origem

  • PHP (um acrônimo recursivo para PHP: Hypertext Preprocessor) é uma linguagem de programação, livre e de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web com integração direta com a HTML.
  • Ela foi desenvolvida por Rasmus Lerdorf em 1995 com o nome de Personal Home Pages Tools, pois Lerdorf a desenvolveu para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal.

Origem

  • Em 1997 um novo pacote da linguagem foi lançado com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL. Esse pacote foi à primeira versão lançada publicamente e possui a seguintes características:
    • os scripts eram interpretados,
    • o interpretador continha bugs que acusavam erros em códigos PHP válidos e tinha uma baixa performance.
       

Origem

  • Mais tarde, Zeev Suraski e Andi Gutmans reescreveram o interpretador lançando assim o PHP3, que ainda não era muito bom, pois muitos recursos não eram compatíveis com o PHP/FI, tinha um suporte básico para a programação orientada a objetos e a baixa performance continuava.

Frameworks

Características

  • O PHP é gratuito, o seu código fonte é aberto, toda a sua documentação está no site oficial www.php.net.
  • A versão atual do php é a 7.2.
  • O PHP é embutido no HTML, uma página php possui uma extenção .php. Sempre que o servidor web receber solicitação de páginas que possui esta extensão, saberá que possui uma linguagem de programação.

Banco de Dados

  • O PHP suporta vários bancos de dados dentre eles:
    • MySQL
    • PostgreSQL
    • Sybase
    • Oracle
    • SQL Server
  • Cada um deles possui uma série de funções que você poderá usar em seus programas para aproveitar todos os recursos.

Instalação

Instalação

sudo apt install php

Hello World

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

Variáveis

  • Para criarmos uma variável basta utilizar o sinal de cifrão. Uma variável pode armazenar textos e números. Além disso, a linguagem PHP é case sensitive, então A é diferente de a.
<?php
  $name = "Guilherme";
  $age = 20;
 
  echo $name; // Guilherme
  echo "</br>";
  echo $age; // 20
?>

Observações

  • Não inicie o nome de uma variável com números;
  • Não utilize espaços em brancos;
  • Não utilize caracteres especiais, somente underline;
  • Crie variáveis com nomes que ajudarão a identificar melhor a mesma;
  • Evite utilizar letras maiúsculas.

Variáveis Globais

  • Todas as variáveis declaradas dentro de um escopo de uma função são locais. Para acessar uma variável é necessária declará-la como global. Ela é acessada a partir de qualquer ponto da aplicação.
<?php
    $total = 0;
    function kmTomi($quilometros)
    {
        global $total;
        $total += $quilometros;
        return $quilometros * 0.6;
    }
    echo 'pecorreu '.kmTomi(100).' milhas \n';
    echo 'pecorreu '.kmTomi(200).' milhas \n';
    echo 'pecorreu no total '.$total.' quilometros \n';
?>

Operadores Aritméticos

  • Podemos utilizar operadores matemáticos para efetuar cálculos com os valores de variáveis. 
<?php
  $a = 3;
  $b = 3;
  $c = $a * $b; // resultado é 9
  $d = $a + $b; // resultado é 6
  $e = $c - $d; // resultado é 3
?>

Operadores de Atribuição

  • Utilizamos os operadores de atribuição para definir variáveis e seus valores, além de usá-los juntamente com os operadores matemáticos. 
<?php
  $a = 1; // A variável $a é igual a 1
  $a += 2; // Somamos 2 ao valor da $a;
  echo $a;
?>

Operadores Relacionais

  • Esses são usados para comparar valores ou expressões, retornando um valor booleano (true ou false):
    • Igual: ==
    • Idêntico: ===
    • Diferente: != ou <>
    • Menor que: <
    • Maior que: >
    • Menor ou igual: <=
    • Maior ou igual: >=
  • É importante lembrar que == não checa o tipo da variável, apenas seu valor. Já o === checa tanto o valor da variável quanto o seu tipo

Criando funções

  • Criar as próprias funções personalizadas ajudam o programador a poder reutilizar código com diversas partes do projeto e também entre projetos distintos.
  • Uma função é um pedaço de código com um objetivo específico, encapsulado sob uma estrutura única que recebe um conjunto de parâmetros e retorna um dado. Uma função é declarada uma vez, mas pode ser usada diversas vezes.

Criando Funções

<?PHP 
    function calculaDobro($valor){
        $dobro = $valor = 2;
        return $dobro;
}
$i = 2;
echo("O dobro de $i é ".calculaDobro($i)."<br>");
echo("O valor original de \$i é ".$i);

?>

Atividade

  1. Desenvolva uma função no qual calcule a área de um quadrado
  2. Desenvolva uma função no qual calcule a área de retângulo.
  3. Desenvolva uma função que calcule a área de um circulo.
  4. Desenvolva uma função que calcule a área de um triângulo.

Programação Orientada a Objetos

PHP

Orientação a Objetos

  • Ao trabalharmos com orientação a objetos é fundamental entender o conceito de classes e objetos. Uma classe é uma estrutura que define um tipo de dados, podendo conter atributos.

Orientação à Objetos

<?php
    class Produto{
        var $codigo;
        var $Descricao;
        var $Preco;
        var $Quantidade;
}
?>

Orientação à Objetos

<?php
    class Produto{
        var $codigo;
        var $Descricao;
        var $Preco;
        var $Quantidade;
}
?>

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

By pakato

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

  • 272