Documente Academic
Documente Profesional
Documente Cultură
Este Material foi criado com o objetivo de ser utilizado na aprendizagem da lgica voltada para
programao, onde ser utilizado a programao estruturada em portugus, tambm chamada de
portugus estruturado ou Portugol. Para auxlio na aprendizagem usaremos a ferramenta
(programa) chamada Visualg.
Ser dividido o contedo em quatro captulos, desde princpios bsicos at algo
mais avanado dentro de um contexto lgico, e que traz ao aluno uma base inicial para futuras
programaes em outras linguagens. As diagramaes desse material foram feitas com o uso da
ferramenta Dia, porm no entraremos em detalhes sobre ela. Vale ressaltar que o contedo aqui
visto, devido a limitao da ferramenta Visualg, no tem aparo completo de seu uso dentro da
ferramenta, mas ser tratado de forma coerente todos os conceitos que sero abordados.
Esperamos que esse material seja um contribuinte para todos aqueles que querem aprender de
forma dedicada e que principalmente tenha um significado importante para inicializao da
formao dos que querem seguir a carreira de programador.
Lgica de Programao 8
Perceba que podemos detalhar mais coisas a respeito do exemplo anterior, nessa sequncia foi
definida alguns fatos comuns.
Quando queremos chegar a um objetivo final, temos que traar uma lgica coerente que tenha
sentido, onde em uma sequncia lgica temos definido todos os passos que devemos seguir at o
final.
Assim, necessrio que seja especificado com clareza e exatido o que deve ser realizado em
cada uma das fases do processo a ser automatizado, bem como a sequncia em que estas fases
devem ser realizadas. A essa especificao da sequncia ordenada de passos que deve ser seguida
para a realizao de uma tarefa, garantindo a sua repetibilidade, d-se o nome de algoritmo. Ao
contrrio do que se pode pensar, o conceito de
algoritmo no foi criado para satisfazer as necessidades da
computao. Pelo contrrio, a programao de computadores
apenas um dos campos de aplicao dos algoritmos. Na
verdade, h inmeros casos que podem exemplificar o uso
(involuntrio ou no) de algoritmos para a padronizao do
exerccio de tarefas rotineiras. No entanto, daqui por diante
a nossa ateno se volta para automao de tarefas
utilizando computadores e para isto definiremos o que lgica
de programao. Os algoritmos so descritos em uma
linguagem chamada pseudocdigo.
Este nome uma aluso posterior implementao em uma linguagem de programao, ou seja,
quando formos programar em uma linguagem, por exemplo Visual Basic, C, C++, Java, etc.,
estaremos gerando nossos cdigo usando a ferramenta VisuAlg.
Exemplo:
Preciso pagar um conta de luz.
O valor da conta e de R$ 45,25 reais.
Portanto preciso de R$ 45,25 reais para pagar a conta.
Pagarei a conta as 3:00h da tarde.
Voltei para casa.
Um algoritmo formalmente uma sequncia finita de passos que levam a execuo de uma
tarefa. Podemos pensar em algoritmo como uma receita, uma sequncia de instrues que busca
uma meta especfica. Estas tarefas no podem ser redundantes nem subjetivas na sua definio,
logo, devem ser claras e precisas.
Os algoritmos servem como modelo para programas, pois sua linguagem intermediria a
linguagem humana e as linguagens de programao, sendo ento, uma boa ferramenta na
validao da lgica de tarefas a serem automatizadas. Os algoritmos servem para representar a
soluo de qualquer problema, mas no caso do processamento de dados, eles devem seguir as
regras bsicas de programao para que sejam compatveis com as linguagens de programao.
Por esse motivo os algoritmos so independentes das linguagens. Ao contrrio de uma linguagem
de programao, no existe um formalismo rgido de como deve ser escrito o algoritmo.
O algoritmo deve ser fcil de interpretar e fcil de codificar, ou seja, ele deve ser o intermedirio
entre a linguagem falada e a linguagem de programao a qual for definir.
Como exemplos de algoritmos podemos citar os algoritmos das operaes bsicas (adio,
multiplicao, diviso e subtrao) de nmeros reais decimais. Outros exemplos seriam os
manuais de aparelhos eletrnicos, como um DVD player, aparelhos celulares, televisores, que
explicam passo a passo como operar, programar, gravar um evento, listar suas fotos, etc.
At mesmo as coisas mais simples, podem ser descritas por sequncias lgicas. Por exemplo:
Trocar uma lmpada.
Pegar uma escada
Colocar a escada no local certo.
Pegar a lmpada nova
Subir na escada.
Retirar a lmpada velha.
Colocar a lmpada nova.
Descer da escada.
Guardar a escada.
Colocar a lmpada velha no lixo.
Ligar o interruptor para testar.
Esta representao pouco usada na prtica porque o uso da linguagem natural muitas vezes da
oportunidade a mas interpretaes, ambiguidades e imprecises.
Por exemplo, a instruo afrouxar ligeiramente as porcas no algoritmo da troca de pneus esta
sujeita a interpretaes diferentes por pessoas distintas. Uma instruo mais precisa seria:
afrouxar a porca, girando-a 30 grau no sentido anti-horrio.
Por mais simples que seja um algoritmo narrativo, pode haver uma grande quantidade de
detalhes, que por sua vez segue um conjunto de regras dentro da sequencia a qual pertencem.
uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes
(instrues, comandos) distintos. Tal propriedade facilita o entendimento das ideias contidas nos
algoritmos e justifica sua popularidade.
Esta forma aproximadamente intermediria a descrio narrativa e ao pseudocdigo (subitem
seguinte), pois menos imprecisa que a primeira e, no entanto, no se preocupa com detalhes de
implementao do programa, como o tipo das variveis usadas. Nota-se que os
fluxogramas convencionais preocupam-se com detalhes de nvel fsico da
implementao do algoritmo. Por exemplo, figuras geomtricas diferentes so adotadas para
representar operaes de sada de dados realizadas em dispositivos distintos.
Existem diversas ferramentas para criao de fluxograma como Jude, Microsoft Visio, Dia(usado
no linux), dentre outras, cada uma delas tem uma vantagem em particular.
Trabalharemos com o editor de diagrama chamado Dia, onde podemos facilmente instalar no
Linux e sua licena de livre acesso.
Dica: Pesquise o uso dessas ferramentas por meios da internet, amigos ou professores.
Deciso
Operao de atribuio
Operao de sada de dados
Um fluxograma se resume a um nico smbolo inicial por onde a execuo do algoritmo comea,
e um ou mais smbolos finais, que so pontos onde a execuo do algoritmo se encerra. Partindo
do smbolo inicial, h sempre um nico caminho orientado a ser seguido, representando a
existncia de uma nica sequncia de execuo das instrues. Isto pode ser melhor visualizado
pelo fato de que, apesar de vrios caminhos poderem convergir para uma mesma figura do
diagrama, h sempre um nico caminho saindo desta. Excees a esta regra so os smbolos
finais, dos quais no h nenhum fluxo saindo, e os smbolos de deciso, de onde pode haver
mais de um caminho de sada(usualmente dois caminhos), representando uma bifurcao no
fluxo.
O exemplo ao lado representa um fluxograma
convencional, mostrando a representao do algoritmo
de clculo da mdia de um aluno sob a forma de um
fluxograma.
A imagem abaixo uma representao no diagrama de
Chapin. (no abordaremos esse diagrama, nessa
apostila).
Esta forma de representao de algoritmos rica em detalhes, como a definio dos tipos das
variveis usadas no algoritmo. Por assemelhar-se bastante a forma em que os
programas so escritos, encontra muita aceitao. Na verdade, esta representao
suficientemente geral para permitir a traduo de um algoritmo nela representado para
uma linguagem de programao especfica seja praticamente direta. A forma geral da
representao de um algoritmo na forma de pseudocdigo a seguinte:
Qual quer dado a ser tratado na construo de um algoritmo deve pertencer a algum tipo, que ir
determinar o domnio de seu contedo. Os tipos mais comuns de dados so conhecidos como
tipos primitivos de dados, so eles: inteiro, real, caractere e lgico. A classificao que ser
apresentada no se aplica a nenhuma linguagem de programao especfica, pelo contrrio, ela
sintetiza os padres utilizados na maioria das linguagens.
Inteiro: todo e qualquer dado numrico que pertena ao conjunto de nmeros inteiros relativos
(negativo, nulo ou positivo). Exemplos: {...4,3,2,1,0,1,2,3,4,...}.
Real: todo e qualquer dado numrico que pertena ao conjunto de nmeros reais (negativo, nulo
ou positivo). Exemplos: {15,34; 123,08; 0,005; 12,0 ; 510,20}.
Numrico: trata-se de todo e qualquer nmero que pertena ao conjunto dos inteiros ou reais,
tambm abrange nmeros binrios, octal e hexadecimal.
Dados literais: todo e qualquer dado composto por um conjunto de caracteres alfanumricos
(nmeros, letras e caracteres especiais). Exemplos: {Aluno Aprovado, 10% de multa,
Confirma a excluso??, S, 9930002, email,123nm,fd54fd}.
Lgico: A existncia deste tipo de dado , de certo modo, um reflexo da maneira como os
computadores funcionam. Muitas vezes, estes tipos de dados so chamados de booleanos,
devido significativa contribuio de Boole a rea da lgica matemtica. A todo e qualquer
dado que s pode assumir duas situaes dados biestveis, algo como, por exemplo, {0/1,
verdadeiro/falso, sim/no, true/false }.
2.2. Constantes.
Uma constante um determinado valor fixo que no se modifica ao longo do tempo, durante a
execuo de um programa. Conforme o seu tipo, a constante classificada como sendo
numrica, lgica e literal.
Nesse exemplo temos o nmero 4 como constante, ou seja, ele nunca se altera.
2.3. Varivel.
Uma varivel um espao reservado na memria do computador para armazenar um tipo de
dado determinado. As variveis devem receber nomes para poderem ser referenciadas e
modificadas quando necessrio. Um programa deve conter declaraes que especificam de que
tipo so as variveis que ele utilizar e s vezes um valor inicial. Tipos podem ser, por exemplo:
inteiros, reais, caracteres, etc. As expresses combinam variveis e constantes para calcular
novos valores.
Veja um exemplo de variveis do tipo carcter e outra do tipo inteiro, ele sero armazenados na
memria:
Toda varivel deve possuir um nome para sua identificao dentro de um algoritmo, mas vale
ressaltar que no podemos atribuir qualquer nome a ela, e uma vez atribudo, verificar se ele
um identificador vlido ou no. Na figura abaixo observamos um resumo atravs de um grfico
que segue resumidamente as regras.
Toda varivel possui algum contedo, que ser armazenado por ela e manipulado pelo algoritmo.
As variveis que sero utilizadas nos algoritmos devem ser declaradas inicialmente. A
declarao de uma varivel indica o tipo de dado que ela pode guardar no decorrer da
execuo do algoritmo (ou no decorrer da execuo do programa que futuramente ser
construdo).
Para declararmos uma varivel, temos que criar um identificador para ela, que ser o nome da
varivel no algoritmo, e tambm temos que definir o tipo de dado que a varivel pode armazenar.
Percebemos que existem duas diferenas na declarao das variveis do Portugol em relao a do
Visual, que justamente a troca de posies e a ausncia de ponto e vrgula.
Exemplo:
Visualg Portugol
alunos : caracter caracter : alunos;
valor : inteiro inteiro : valor;
b : real real : b;
Para que possamos obter dados do meio exterior para uso do computador (memria principal),
estes tm de vir atravs dos dispositivos de entrada. Da mesma forma, as informaes que so
produzidas, tm de ser levadas ao meio externo (um arquivo, uma impressora, uma tela etc.)
atravs de um dispositivo de sada. Para isso, utilizamos dois comandos assim definidos:
Comando leia tem a finalidade de l, do meio externo, a prxima informao disponvel para
leitura e armazena na(s) varivel(eis) discriminada(s) aps o comando, entre parnteses. Mais
tarde aprenderemos como especificar a leitura de um dado que est armazenado em um arquivo e
de que arquivo est sendo lido o dado.
Exemplo: leia (v) O valor da varivel (v) dado por um dispositivo de entrada.
Exemplo: escreva(x) O valor atual da varivel (x) informado para um dispositivo de sada.
Vale ressaltar que em linguagens de programao geralmente termina um comando com ponto
e vrgula (;), mas para o uso do Visualg no precisamos usar (;) para fechar comando, uma vez
que isso ocorre de forma automtica.
.Exemplo: escreva(x) O valor atual da varivel (x) informado para um dispositivo de sada.
Tambm podemos concatenar valores no comando de sada. Isso varia muito de uma linguagem
para outra, por exemplo:
Utilizamos o escreval quando queremos uma quebra de linha, troque por escreva e perceba o
que acontece:
Exemplos:
Obs.: utilizamos somente o = no lugar de ==, e < > no lugar de !=, mas isso somente no
Visualg.
Exemplos:
Comparaes:
num != 3 {compara se num diferente de 3,se for igual retorna falso}
nome = DENISE {compara se nome igual a DENISE ,se for retorna verdadeiro}
num > 5 falso (0) {3 no maior que 5}
Esses operadores tem a finalidade de novas proposies lgicas composta a partir de outra
proposies lgicas simples. Observe:
Operador Funo
no Negao
e Conjuno
ou Disjuno
Exemplo:
cdigo-fonte.
Este comando permite que se fornea ou altere o valor de uma determinada varivel, onde o tipo
desse valor seja compatvel ao tipo de varivel na qual est sendo armazenado, de acordo com o
especificado na declarao.
Exemplo:
NUM <- 8 {A varivel NUM recebe o valor 8}
NOME <- Guilherme {A varivel NOME recebe o valor Guilherme}
6)Crie um programa no onde podemos receber dois nmeros digitados pelo usurio no final ele
some os nmeros e imprima o resultado.
7)Dado a formula:
Crie um programa para calcular a formula de Bhaskara. Onde no final mostre ao usurio x1 e x2
separadamente.
Dica: o usurio digita trs valores, a, b e c, o programa ter duas variveis para receber o
calculo, x1 e x2. Para calcular raiz quadrada use o comando raizQ(x) onde x o numero que
tem valor inteiro, atribua o resultado da raiz a soma e depois a subtrao.
ex: b raizQ(25) , b recebe 5,pois raiz de 25, e b deve ser do tipo real.
As estruturas de controle de dado so responsveis pela manipulao dos dados conforme seja
necessrio na realizao de um processamento. Cada instruo programvel possui uma lgica
de operao e estabelece uma sequencia de aes a serem efetuadas ou verificadas.
Quando estivermos criando os algoritmos sero necessrias s manipulaes de dados
respeitando a sequencia lgica de cada comando, buscando sempre alcanar os objetivos
almejados pelos algoritmos. Basicamente as estruturas de controle de dados so de trs tipos
principais:
Sequencial: conjunto de comandos separados por ponto e vrgula (;) que so executados em uma
sequncia linear de cima para baixo.
Seleo: a partir de um teste condicional, uma instruo, ou um conjunto de instrues, podem
ser executados ou no, dependendo exatamente do resultado do teste efetuado.
Repetio: uma instruo ou o conjunto de instrues que ser executado repetidamente, de
acordo com o resultado de um teste condicional.
3.1. Estrutura sequencial.
A estrutura sequencial a mais convencional entre todas as possveis, pois ela consiste na
execuo de uma instruo de cada vez, onde o encerramento da primeira instruo permite o
acionamento da instruo seguinte, respeitando a ordem de cima para baixo.
Observe o exemplo a seguir: O mesmo exemplo no Visualg fica:
Declaraes
real NOTA;
Inicio
escreva("Informa a nota da prova: ");
leia(NOTA);
escreva("Nota =", NOTA);
Fim
importante observar que sempre ser executado primeiro o bloco de declaraes e na sequencia
o bloco de instrues. A execuo da palavra reservada Fim encerra a execuo do algoritmo.
Portugus estruturado:
Acompanhe a seguir as regras de representao em algoritmo para a tcnica descritiva do
portugus estruturado.
Sintaxe:
:
se (<condio>) ento
comando 1;
comando 2;
:
:
comando n;
fim se;
Exemplo No Visualg
Declaraes
inteiro IDADE;
Inicio
escreva("Informe sua idade: ");
leia(IDADE);
se (IDADE < 15) ento
escreva ("Voc uma criana");
fim se;
Fim
Fluxograma:
Abaixo temos no fluxograma o smbolo que representa uma deciso ou seleo e a seguinte:
INICIO
Inteiro IDADE
Exerccio rpido:
escreva (informe 1) Crie um algoritmo que leia um
sua idade:) nmero e diga se ele maior ou menor
que 10.
2) Crie um algoritmo que leia dois
nmeros e determine qual o maior
Leia (IDADE) entre eles, imprimindo na tela (o
primeiro nmero o maior, o
segundo nmero e o maior ) de acordo
com o valor digitado.
F
IDADE < 15
V
escreva (voc e
uma criana)
FIM
:
se (<condio>) ento
comando 1;
:
comando n;
seno
comando 5;
:
comando m;
fim se;
Exemplo: no Visualg
Declaraes
inteiro idade;
Inicio
escreva("Informe sua idade: ");
leia(idade);
se (idade < 15) ento
escreva ("Voc uma criana");
seno
escreva("Voc adulto");
fim se;
Fim
Se a idade informada for menor que 15 ento a mensagem a classificar como uma criana,
seno a mensagem apresentada ser que Voc adulto.
INICIO
Leia (IDADE)
V F
IDADE < 15
FIM
3.2.3. Seleo encadeada
A instruo de seleo (SE) pode ser encadeada uma dentro da outra, seja no bloco verdadeiro
(ento) ou falso (seno). Todas as instrues programveis podem estar dentro de qualquer um
dos blocos da instruo de seleo.
O encadeamento destas instrues tambm chamada de aninhamento de instrues de seleo
ou condicional vrias, no existindo um limite de quantos testes condicionais podem estar dentro
de outro. Quem estabelece este tipo de limite a soluo lgica proposta no algoritmo para
alcanar uma soluo eficiente.
Sintaxe:
se (<condio_1>) ento
<bloco de comandos 1>;
seno
se (<condio_2>) ento
<bloco de comandos 2>;
seno
se (<condio_3>) ento
<bloco de comandos 3>;
fim se;
fim se;
fim se;
Exemplo no Visualg
Declaraes
inteiro idade;
Incio
escreva("Informe sua idade: ");
leia(idade);
se (idade < 20) ento
se(idade < 15) ento
escreva ("Voc criana");
seno
escreva ("Voc adolescente");
fim se;
seno
se(idade < 50) ento
escreva("Voc adulto");
seno
escreva("Voc velho");
fim se;
fim se;
Fim
Fluxograma
INICIO
Inteiro IDADE
escreva (informe
sua idade:)
Leia (IDADE)
F F
IDADE < 20 IDADE < 50
V
V
F
IDADE < 15
escreva (voc e escreva (voc e
V adulto) velho)
FIM
Exerccio Rpido
1) Crie um algortimo que receba os trs lados(A,B,C) de um tringulo e diga de
ele tringulo escaleno(todos os lados diferente), issceles(somente dois lados
iguais) ou equiltero(todos os lados iguais).
2) Dado trs variveis, crie um algoritmo que determine quem a maior, a
intermediaria e a menor.
:
escolha (X)
caso <v1>:
comandos;
caso <v2>:
comandos;
caso <v3>:
comandos;
caso
contrario:
comandos;
fim escolha;
<v1>, <v2>, <v3> so supostos valores a serem relacionados por meio da operao de igualdade.
Exemplo:
Declaraes
inteiro estao;
Inicio
escreva("Digite o perodo trimestral do ano em que estamos: ");
leia(estao);
escolha (estao) { instruo de mltipla escolha sobre estao}
caso 1: escreva ("vero"); { testes de igualdades sobre estao }
caso 2: escreva ("outono");
caso 3: escreva ("inverno");
caso 4: escreva ("primavera");
caso contrario: escreva ("perodo invlido");
fim escolha;
Fim
No Visualg
Temos algumas diferenas de sintaxe, onde uma delas a ausncia de dois pontos aps caso, a
outra o comando outrocaso que no portugol representado por casocontrario.
Exemplo:
Supondo que o valor Soluo (algoritmo descritivo):
desejado seja 2 ento:
2x1=2
2x2=4
2x3=6
2x4=8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
Sintaxe:
:
enquanto (< condio >) faa
<bloco de repetio>; { com um ou vrios comandos }
fim enquanto;
Declaraes
real nota, media;
inteiro aux;
Incio
aux 1;
media 0;
enquanto aux < 50 faca
escreva("Informe sua nota: ");
leia(nota);
media media + nota;
aux aux + 1;
fim enquanto
escreva("Mdia da turma = ",media /50);
Fim
Fluxograma
Exerccio rpido:
1) Crie um algortimo que conte de 1 at 100.
2) Crie um algortimo que receba 10 nmeros
e imprima na tela aps cada digitao.
3) Crie um programa que conte de 1 a 52.
O teste condicional para realizar a repetio sobre o bloco de instrues existente entre a
palavra reservada REPITA e ATE executado somente no final do bloco, conforme a
organizao sequencial do algoritmo.
O bloco entre as duas palavras reservadas desta instruo ser executado no mnimo uma
vez.
A repetio executada somente se o teste condicional for falso, pois sendo ele
verdadeiro a repetio encerrada.
Sintaxe:
:
repita
<bloco de repetio>; {com um ou vrios comandos}
at (<condio>);
:
Declaraes
real nota, media;
inteiro aux;
Incio
aux 1;
media 0;
repita
escreva("Informe sua nota: ");
leia(nota);
media media + nota;
aux aux + 1;
at (aux > 50);
escreva("Mdia da turma = ",media /50);
Fim
Usando a representao grfica, vamos observar o mesmo exemplo usando a instruo REPITA
... AT.
O bloco de repetio vai ser executado at a condio for maior que 50.
Exerccio rpido:
1) Crie um algortimo que leia um
nmero e mostre vrios * na tela de
acordo com esse nmero. Ex: 10 vai
imprimir **********.
2) Crie um algoritmo que leia dois
nmeros e mostre o intervalo entre eles.
Ex: 5 e 12 vai mostra: 6,7,8,9,10,11.
Sintaxe:
:
para X de i at f passo p faa
<comandos>;
fim para;
Onde:
X uma varivel inteira que auxiliar na contagem da repetio iniciada com o valor i at o valor
final de f ,p o valor do incremento dado a varivel X.
O problema da tabuada, apresentado anteriormente, pode ser solucionado com o algoritmo que
usa eficientemente a instruo de repetio para ... faa.
Declaraes
inteiro valor, contador;
Incio
escreva ("Informe o valor desejado: ");
leia(valor);
para contador de 1 at 10 passo 1 faa
escreval(valor, " x ",contador," = ", ( valor * contador) );
fim para;
Fim
No Visualg:
Declaraes
real nota, soma, media;
inteiro aux;
Incio
soma <- 0;
para aux de 1 at 50 passo 1 faa
escreva("Informe sua nota: ");
leia(nota);
soma<- soma + nota;
fim para;
media <- soma / 50;
escreva ("Mdia da turma = ", MEDIA);
Fim
Neste exemplo, a repetio, ou looping, realizado pela instruo para ... faa efetua a leitura e a
soma de 50 notas de alunos de uma turma, apresentando no seu final a mdia desta turma.
Fluxograma:
Acompanhe a seguir o algoritmo grfico da
soluo descrita anteriormente em portugus
estruturado.
Exerccio rpido:
1) Faa um algoritmo que receba 10
nmeros e imprima somente os 5
primeiros.
2) Faa um algoritmo que imprima
somente nmeros pares de 2 at 20.
Diagrama:
enquanto
repita
para
Repare que a estrutura para a mais complexa, uma vez que acontece vrios processos no
mesmo, as estruturas repita e enquanto so muito semelhantes. A diferena est na ordem da
expresso e ao, pois em repita a expresso lgica testada no final, ou seja, a ao executa
pelo menos uma vez.
Comparao da sintaxe:
enquanto
enquanto aux < 50 faca
.......
fim enquanto
repita
repita
......
at (aux > 50);
para
para aux de 1 at 50 passo 1 faa
.....
fim para;
Repare que a varivel aux iniciada varias vezes pois a cada lao de repetio
incrementado um novo valor, no caso de 1 at o numero 10.
Lembrando que estas regras podem mudar de acordo com a linguagem. Veja a
forma estruturada utilizada no Visualg.
Declarao:
Inicializao:
Exemplo:
Diagrama:
onde:
Li = representa o limite inicial do vetor.
Lf = representa o limite final do vetor.
Tipo primitivo: representa qualquer uns dos tipos bsicos de dados.
Observe:
n e o tamanho do vetor
Exemplo:
real: media[40];
inteiro: valor[100];
alunos : vetor[0..50] de caracter
dias : vetor[0..31] de inteiros
Sintaxe:
Veja uma figura onde representamos um vetor de 10 posies onde cada uma guarda uma nota
diferente. Para recuperarmos o valor guardado, devemos fazer uma chamada do nome do vetor
passando pra ele qual a posio queremos. Vale lembrar que se passarmos um ndice invlido
ocorrer um erro no algoritmo.
Uma observao importante a ser feita a utilizao da construo para a fim de efetuar a
operao de leitura repetidas vezes em cada uma delas, lendo um determinado componente do
vetor. De fato esta construo muito comum quando se opera com vetores, devido
necessidade de se realizar uma mesma operao com os diversos componentes dos mesmos. Na
verdade, so raras as situaes que se deseja operar isoladamente com um nico componente do
vetor.
Um vetor uma estrutura de dados indexada, ou seja, cada valor pode ser acessado atravs de
um ndice, o qual corresponde a uma posio no vetor os ndices so valores inteiros e positivos
(0, 1, 2, 3,...); em outras palavras, uma posio especfica do vetor pode ser acessada diretamente
atravs do seu ndice.
Abaixo temos o exemplo de uma operao com para, onde temos um vetor notas de 5 posies e
cada uma ser atribuda o valor de 1*10 at 5*10 logo aps a leitura:
atribuio: leitura
onde:
Li = representa o limite inicial do vetor.
Lf = representa o limite final do vetor.
V = vetor.
Vn = nmeros de vetores.
Tipo primitivo: representa qualquer uns dos tipos bsicos de dados.
Professor Renato Almansa da Silva Curso Tcnico em Informtica
Lgica de Programao 44
Dica: Cada vetor separado por virgula, com isso formamos uma matriz.
Sintaxe da declarao:
Onde:
LI1..LF1, LI2..LF2, ..., LIn..LFn : So os limites dos intervalos de variao dos ndices da
varivel, onde cada par de limites est associado a um ndice; <tipo> : representa qualquer um
dos tipos bsicos ou tipo anteriormente definido; lista de variveis : lista de variveis (separadas
por vrgula) que tero o mesmo tipo denotado por IDENTIFICADOR.
Exemplo:
tipo SALA = matriz [1..4, 1..4] de inteiro;
tipo M = matriz [1..3, 1..5, 1..4] de inteiro;
No Visualg:
notas : vetor [1..2,1..5] de inteiro
alunos : vetor[1..3,1..20] de caracter
Observe que no cdigo temos uma matriz com duas dimenses onde cada dimenso um vetor.
Alm disso, essa matriz guardada em uma varivel chamada dados, onde ela representa tanto o
nome como a rua de uma determinada pessoa.
Uma das principais estruturas de dados o registro. Para exemplificar imagine uma identificao
de passageiro, ou seja, aquele formulrio de informaes que o passageiro entrega ao motorista
antes de embarcar no nibus junto com a passagem. Ela formada por um conjunto de
informaes logicamente relacionadas, porm de tipos diferentes tais como nmeros de
passageiros(inteiro), idade(inteiro) e o nome do passageiro(caracteres) que so subdivises do
registro (elementos do conjunto), tambm chamadas de campo.
Um registro composto por campos que so partes que especificam cada uma das informaes
que o compe. Uma varivel do tipo registro uma varivel composta, pois engloba um conjunto
de dados e heterognea (cada campo pode ser de um tipo primitivo diferente).
Diagrama:
Dica: No existe registro no Visualg, portanto para programao do mesmo usa-se outras
linguagens que sero visto nos mdulos mais adiante.
Onde:
IDENTIFICADOR: representa o nome associado ao tipo registro construdo; tipo1, tipo2, tipon :
representam qualquer um dos tipos bsicos ou tipo anteriormente definido; campo1,
campo2, campo: representam nomes associados a cada campo do registro; lista de variveis:
lista de variveis (separadas por vrgula) que tero o mesmo tipo denotado por
IDENTIFICADOR.
Declarao: Como possumos um vetor composto de registros, no podemos declarar esse vetor
sem antes ter definido a estrutura de dados de seus elementos(registros);devemos ento definir
primeiro o tipo construdo registro e depois o vetor.
Manipulao:
A manipulao de um registro de conjuntos deve obedecer as manipulaes prprias de cada
estrutura de dados anteriormente definida. Para utilizar um campo especfico do registro,
devemos diferenciar esse campo. Para tal utilizamos o caractere . (ponto) para
estabelecer a separao entre o nome do registro e o nome do campo.
leia(PASSAGEM);
escreva(PASSAGEM);
incio
{definies anteriores}
.
.
leia(PASSAGEM.numero);
leia(PASSAGEM.origem);
.
.
escreva(PASSAGEM);
fim
1) Diga com suas palavras qual a principal finalidade de uma estrutura de dados.
2) Qual a diferena de variveis compostas homogneas para variveis compostas heterogneas.
3) Qual a diferena de variveis compostas unidimensionais para variveis compostas
multidimensionais.
4) Como podemos definir o conceito de registro.
5) Crie um algoritmos que leia um vetor com 20 nmeros de 1...20 e escreva na tela cada um
deles, use escreval (escrever com quebra de linha).
6) Crie um algoritmo que leia 30 nmeros de 1... 30 e gere um segundo vetor para receber os
mesmos, porm de maneira invertida, mostre na tela os dois vetores.
7) Crie um algortimo que leia 10 nmeros digitados pelo usurio e diga qual foi o maior
numero, use dois vetores de mesmo tipo.
8) Crie um algoritmo que tenha uma matriz 2 x 3 com base nisso faa:
a) O preenchimento de cada linha digitada pelo usurio.
b) A soma das 2 linhas separadamente.
c) A soma das 3 colunas separadamente.
d) A soma total da matriz.
responda:
a) Quantos campos do tipo inteiro o registro possui.
c) Quantos campos do tipo caracter o registro possui.
d) Declare a forma desse registro em cdigo.
c) Com uma folha de papel criem um algortimo onde o usurio digite todas essas informaes e
logo aps ele escreva essas informaes na tela.
Este material tem como objetivo abordar o uso da tecnologia de programao web PHP e a base
de dados MYSQL. Alm disso, mostrar a sintaxe e exemplos prticos dos principais comandos.
Ser dividido o contedo em dez captulos, onde, sete deles so dedicados a tecnologia PHP, um
direcionado a tecnologia HTML com PHP, um a comandos SQL voltados para banco de dados
MYSQL, e outro para associao das trs tecnologias. Alm disso em alguns captulos temos
exerccios rpidos para fixao do contedo visto e ao final de cada captulo, uma lista de
exerccios propostos.
No falaremos de ferramentas de edio, onde fica a critrio do aluno escolher juntamente com o
seu instrutor qual a ferramenta mais adequada, porem informamos que todas as
imagens e testes executados em nessa apostila teve como base o uso da ferramenta netbeans para
PHP.
PHP e MySQL 51
O PHP tem pouca relao com layout, eventos ou qualquer coisa relacionada aparncia de uma
pgina da Web. De fato, a maior parte do que o PHP realiza invisvel para o usurio final. Algum
visualizando uma pgina de PHP no ser capaz de dizer que no foi escrita em HTML, porque o
resultado final do PHP HTML.
O PHP um mdulo oficial do servidor http Apache, o lder do mercado de servidores Web livres
que constitui aproximadamente 55 por cento da World Wide Web. Isso significa que o mecanismo
de script do PHP pode ser construdo no prprio servidor Web, tornando a manipulao de dados
mais rpida. Assim como o servidor Apache, o PHP compatvel com vrias plataformas, o que
significa que ele executa em seu formato original em vrias verses do UNIX e do Windows. Todos
os projetos da Apache Software Foundation incluindo o PHP so software de cdigofonte
aberto.
5.1.1. Um pouco da Histria do PHP.
Rasmus Lerdorf, engenheiro de software, membro da equipe Apache o criador e a fora motriz
original por trs do PHP. A primeira parte do PHP foi desenvolvida para utilizao pessoal no final
de 1994. Tratavase de um wrapper de PerlCGI que o auxiliava a monitorar as
pessoas que acessavam o seu site pessoal. No ano seguinte, ele montou um pacote chamado de
Personal Home Page Tools (tambm conhecido como PHP Construction Kit) em resposta
demanda de usurios que por acaso ou por relatos falados depararamse com o seu trabalho. A
verso 2 foi logo lanada sob o ttulo de PHP/FI e inclua o Form Interpreter, uma ferramenta para
analisar sintaticamente consultas de SQL. Em meados de 1997, o PHP estava sendo utilizado
mundialmente em aproximadamente 50.000 sites.
Obviamente estava se tornando muito grande para uma
nica pessoa administrar, mesmo para algum concentrado e
cheio de energia como Rasmus. Agora uma pequena equipe
central de desenvolvimento mantinha o projeto sobre o
modelo de junta benevolente do cdigofonte aberto,
com contribuies de desenvolvedores e usurios em todo o
mundo. Zeev Suraski e Andi Gutmans, dois programadores
israelenses que desenvolveram os analisadores de sintaxe PHP3 e
PHP4, tambm generalizaram e estenderam seus trabalhos sob a
rubrica de Zend.com (Zeev, Andi, Zend, entendeu?).
O quarto trimestre de 1998 iniciou um perodo de crescimento
explosivo para PHP, quando todas as tecnologias de cdigofonte
aberto ganharam uma publicidade intensa.
Em outubro de 1998, de acordo com a melhor suposio, mais de 100.000 domnios nicos
utilizavam PHP de alguma maneira. Um ano depois, o PHP quebrou a marca de um milho de
domnios. Enquanto escrevo esta apostila, o nmero explodiu para cerca de dois milhes de
domnios.
5.2. Instalao do Servidor PHP
As requisies so feita de forma cliente servidor, onde um determinado cliente faz
uma requisio a um servidor, ele por sua vez recebe a requisio e faz todo o processo em
diferentes camadas, retornando somente o que o cliente(browser) solicitou.
Para o funcionamento do PHP necessrio a instalao de um servio dentro de um sistema
operacional, esse servio e proporcionado atravs do Apache que compatvel com o protocolo
HTTP. Alm disso preciso instalar a verso do PHP5 para um funcionamento mais compatvel
com as maioria das pginas PHP. Outro servio o banco de dados, onde futuramente
estaremos trabalhando com ele. O banco de dados que usaremos o MYSQL.
Normalmente essa instalao chamada de LAMP(Linux, Apache, MYSQL, PHP) voltada para
sistemas operacionais Linux, como tambm WAMP(Windows, Apache, MYSQL, PHP) voltada
para sistemas operacionais Windows. Ser visto a instalao do LAMP uma vez que esse material e
voltado para Linux Educacional e por se tratar de uma instalao mais complicada, e tambm a
ferramenta phpMyAdmin usada para administrar banco de dados MYSQL.
Professor Renato Almansa da Silva Curso Tcnico em Informtica
PHP e MySQL 53
Isto mostra que o apache estar funcionando corretamente. Trata-se de um texto dentro de um
arquivo HTML que vem como padro dentro da pasta var/www , essa a pasta principal do
apache, onde trabalharemos com os arquivos PHP.
O apache pode ser configurado de forma que podemos acessar mais de uma pgina com ip's ou
portas diferentes, ou seja podemos ter www1,www2 em uma mesma maquina servidora fazendo
acesso por endereos como http://localhost:8060 ou http://localhost:82, entre outros. Mas
trabalharemos apenas com a configurao padro do apache, uma vez que existe muito contedo a
respeito desse assunto na internet. Para obter mais informaes consulte a documentao do site
oficial do apache: http://httpd.apache.org/docs/2.2/
Nesse momento estamos criando uma aplicao PHP que chama a funo phpinfo() que tem
como finalidade mostra informaes sobre configurao do PHP.
Abra o Browser e digite http://localhost/, se tudo estiver correto, observaremos seguinte tela:
Obs: em certo momento aparecer uma tela pedindo a senha de root do banco de dados, digite a senha
que o seu instrutor definir, logo aps confirme a senha digitando a novamente.
Vale ressaltar que o smbolo asterisco (*) simboliza qualquer nome a ser atribudo ao arquivo PHP.
Alm disso o cdigo de um programa escrito em PHP deve estar contido entre os
seguintes delimitadores:
ou
Outro fator importante para quem est programando sempre ter boas tcnicas de programao,
entre elas podemos citar os comentrios nos cdigos fonte, sempre e aconselhvel comentar os
trechos mais importantes, onde tanto o programador quanto outra pessoa ao analisar o cdigo,
possa identificar pelos comentrios trechos importantes que possa ser alterados ou no.
Para comentar uma nica linha nos cdigo PHP podemos utilizar tanto o separador // como
tambm #, observe o exemplo abaixo:
Lembrando que os comentrios so trechos de cdigo que no so executados, onde eles servem
somente para quem tem acesso aos cdigosfonte ou est ligado diretamente a programao desse
cdigo. Podemos tambm comentar muitas linhas, isso serve quando queremos que boa parte do
Professor Renato Almansa da Silva Curso Tcnico em Informtica
PHP e MySQL 57
ou
<?php
//pgina web.
echo '<h1>Ol, essa sua primeira pgina!<h1>';
echo '<h2>Responda!</h2>' print 'O que PHP?';
print 'Qual sua finalidade?'; echo '<h4>Resposta: item a!</h4>';
?>
6.1. Variveis
Variveis so identificadores criados para guardar valores por determinado tempo. Em PHP elas so
declaradas e inicializadas, porm so armazenadas na memria RAM do servidor web. Esse um
dos motivos pelo qual os servidores precisam de grande quantidades de memria.
Imagine um servidor com mais de 20 mil acessos simultneos ao mesmo tempo, onde cada usurio
est acessando a mesma pgina feita em PHP. So criadas neste processo variveis
diferentes para cada usurio, logo, isso faz com que muitos processos sejam gerados e processados
pelo servidor.
A tipagem em PHP dinmica, ou seja, as variveis no precisam ser obrigatoriamente
inicializadas aps a declarao. Uma varivel inicializada no momento em que feita a primeira
atribuio. O tipo da varivel ser definido de acordo com o valor atribudo. Esse um fator
importante em PHP, pois uma mesma varivel pode ser de um mesmo tipo ou no, e pode assumir
no decorrer do cdigo um ou mais valores de tipos diferentes.
Para criar uma varivel em PHP, precisamos atribuir-lhe um nome de identificao,
sempre procedido pelo caractere cifro ($). Observe um exemplo:
Para imprimirmos as duas variveis usamos aspas duplas no comando echo, no exemplo anterior
temos a seguinte sada:
Obs.: Podem acontecer erros na exibio das mensagens por conta das codificaes de
acentuao. Caso isso acontea, mude a codificao do seu navegador ou utilize as metas
de codificao.
Nunca utilize espao em branco no meio do identificados da varivel. Ex: $nome um;
Nunca utilize caracteres especiais( ! @ # ^ & * / | [ ] { } ) na nomenclatura das variveis.
Evite criar variveis com mas de 15 caracteres em virtude da clareza do cdigofonte.
Exemplo:
<?PHP
$codigo_cliente; //exemplo de varivel
$codigoCliente; //exemplo de varivel
?>
Com exceo de nomes de classes e funes, o PHP case sensitive, ou seja, sensvel a letras
maisculas e minsculas. Tome cuidado ao declarar variveis. Por exemplo a varivel $codigo
tratada de forma totalmente diferente da varivel $Codigo.Em alguns casos, precisamos ter em
nosso cdigofonte nomes de variveis que podem mudar de acordo com determinada situao.
Neste caso, no s o contedo da varivel mutvel, mas tambm variante (variable
variables). Sempre que utilizarmos dois sinais de cifro ($) precedendo o nome de uma varivel, o
PHP ir referenciar uma varivel representada pelo contedo da primeira.
Nesse exemplo, utilizamos esse recurso quando declaramos a varivel $nome (contedo de
$varivel) contendo 'maria'.
Resultado = maria.
Quando uma varivel atribuda a outra, sempre criada uma nova rea de armazenamento na
memria. Veja neste exemplo que, apesar de $b receber o mesmo contedo de $a, aps qualquer
modificao em $b, $a continua com o mesmo valor, veja:
Para criar referncia entre variveis, ou seja, duas variveis apontando para a mesma regio da
memria, a atribuio deve ser precedida pelo operador &. Assim, qualquer alterao em qualquer
uma das variveis reflete na outra, veja:
No exemplo anterior percebemos que tanto $a como $b apontam para a mesma referncia na
memoria, dessa forma se atribuirmos um novo valor em $a ou em $b, esse valor ser gravado no
mesmo endereo, fazendo com que, ambas variveis possam resgatar o mesmo valor.
No entraremos em detalhes em relao a converso desses valores, porm que fique claro a ideia
de que uma varivel numrica pode assumir diferentes tipos de valores.
Resource mysql_connect(...)
Outro exemplo:
mysql_fetch_row(...)
6.3. Constantes
6.3.1. Constantes pr-definidas
O PHP possui algumas constantes pr-definidas, indicando a verso do PHP, o Sistema Operacional
do servidor, o arquivo em execuo e diversas outras informaes. Para ter acesso a todas as
constantes pr-definidas, pode-se utilizar a funo phpinfo(), que exibe uma tabela contendo todas
as constantes pr-definidas, assim como configuraes da mquina, sistema operacional, servidor
HTTP e verso do PHP instalada, como foi feito em exemplos anteriores.
PHP utiliza checagem de tipos dinmica, ou seja, uma varivel pode conter valores de diferentes
tipos em diferentes momentos da execuo do script. Por este motivo no necessrio declarar o
tipo de uma varivel para us-la. O interpretador PHP decidir qual o tipo daquela varivel,
verificando o contedo em tempo de execuo.
Ainda assim, permitido converter os valores de um tipo para outro desejado, utilizando o
typecasting ou a funo settype (ver adiante).
Assim podemos definir novos valores para terminadas variveis:
typecasting Descrio
(int),(integer) Converte em inteiro.
(real),(float),(double) Converte em ponto flutuante.
(string) Converte em string.
(object) Converte em objeto.
Exemplos:
Convertendo de ponto flutuante para inteiro.
Resultado: 208
Convertendo de String para Object.
Resultado: 542
O resultado poderia ser 542.0, mas lembrando que o interpretador do PHP faz outra converso ao
notar que o numero 542.0 tem a mesma atribuio de 542. O resultado seria o mesmo se tentarmos
atribuir $a = 542.0.
6.5. EXERCCIOS PROPOSTOS
1) Qual a principal finalidade de uma varivel?
2) O que significa tipagem automtica.
3) Cite algumas dicas importantes na nomenclatura de variveis:
4) Das variveis abaixo, quais possuem nomenclaturas vlidas.
$a___b; $a_1_; $_incio;
$@nome; $val_!; $nome;
$a_|_; $#valor; $palavra;
$tele#; $123; $__=__;
$VALOR_MAIOR; $____; $all;
Resposta: __________________________________________________________________________
5) Crie dez variveis atribuindo valores diversos, logo aps use o comando echo pra imprimir na
tela do browser, exemplo:
<?php
$nome = Maria Cavalcante;
echo $nome;
....
?>
6) Quais os tipos de variveis que podemos citar em PHP.
8) Como podemos distinguir um tipo de varivel de outro, uma vez que a tipagem feita de forma
automtica em PHP.
9) Faa a ligao com os seguintes tipos:
1 $var = 10; ( )ponto flutuante.
2 $var = palavra; ( )tipo null.
3 $var = 10.22; ( )tipo objeto.
4 $var = true; ( )String.
5 $var = null; ( )numrico.
6 $var = new abc; ( )booleano.
Os operadores tem seu papel importante dentro de qualquer linguagem de programao. atravs
deles que podemos realizar diversos operaes dentro de um programa, seja ela de atribuio,
aritmtica, relacional, lgico, dentre outros. Em PHP no diferente, os operadores so utilizados
constantemente, porm existem algumas regras que veremos mais adiante.
7.1. Operadores de strings
So operadores utilizados para unir o contedo de uma string a outra, com isso podemos dizer que
h dois operadores de string. O primeiro o operador de concatenao ('.') que j utilizamos em
exemplos anteriores, ele retorna a concatenao dos seus argumentos direito e esquerdo. O segundo
o operador de atribuio de concatenao ('.='), que acrescenta o argumento do lado direito no
argumento do lado esquerdo.
Observe o exemplo abaixo:
Nesse exemplo pode-se observar a declarao da varivel $d, logo aps temos uma inicializao e
atribuio de concatenao em uma mesma linha, isso possvel em PHP, deixando o cdigo mais
otimizado porm menos legvel.
7.2. Operadores de atribuio
O operador bsico de atribuio "=" (igual). Com ele podemos atribuir valores as variveis como
foi visto em exemplos anteriores. Isto quer dizer que o operando da esquerda recebe o valor da
expresso da direita (ou seja, " configurado para"). Mas podemos usar algumas
tcnicas, observe o exemplo abaixo:
Resultado: a = 9,b = 4
Alm do operador bsico de atribuio, h "operadores combinados" usados para array e string, eles
permitem pegar um valor de uma expresso e ento usar seu prprio valor para o resultado daquela
expresso.
Podemos definir uma sequencia com duas concatenaes, onde $a = Dia.turma e logo aps
temos $b = Bom.Dia turma.
Os operadores de atribuio so usados para economizar linhas de cdigo, deixando assim o cdigo
mais funcional e otimizado. A tabela abaixo mostra os principais operadores de atribuio:
Operadores Descrio
= Atribuio simples.
+= Soma, depois atribui.
= Subtrai, depois atribui.
*= Multiplica, depois atribui.
/= Divide, depois atribui.
%= Modulo(resto) da diviso, depois atribui.
.= Concatena, depois atribui.
Exemplo:
Resultado: 24 12 2
Vale ressaltar que a cada echo, o valor de $a sofre modificaes. Isso devido a atribuio feita aps
a operao. Usamos o operador ponto (.) para concatenar os valores obtidos com <br> cdigo usado
em HTML para quebra de linha.
So operadores usados para atribuir em 1 ou 1 a varivel, isso pode ser feito antes ou depois da
execuo de determinada varivel. A tabela abaixo mostra tais operadores:
Operadores Descrio
++$a Princremento. Incrementa $a em um e, ento, retorna $a.
$a++ Psincremento. Retorna $a, ento, incrementa $a em um.
--$a Prdecremento. Decrementa $a em um e, ento, retorna $a.
$a-- Psdecremento. Retorna $a, ento, decrementa $a em um.
Exemplo:
Nesse exemplo temos uma forma aplicada do uso de decremento e incremento, lembrando que a
varivel $a pode ter qualquer nome. Tambm podemos fazer um comparativo com o Princremento
ou incremento prefixado com operaes que j conhecemos, observe:
Operadores Descrio
+ Adio.
- Subtrao.
* Multiplicao.
/ Diviso.
% Mdulo ou resto da diviso.
Exemplo:
Nesse exemplo fizemos algumas
operaes, porm ao utilizar
parnteses, estamos determinando
quem executa primeiro, no caso a
soma de $b+5.
Nesse exemplo declaramos e iniciamos trs variveis. Usamos ento o comando echo para imprimir
o resultado, onde o condicional ?: foi utilizado. Iniciamos as comparaes de $a, $b e $c, caso a
comparao individual retorne TRUE, imprime verdadeiro, caso retorne FALSE, imprime falso.
Observe que o comparador === compara o valor e o tipo, retornando FALSE por $b se tratar de
um tipo inteiro, e $c um tipo ponto flutuante, j o comparador == compara somente os valores
onde 45 igual a 45.0 retornando verdadeiro. Tambm podemos usar o operador !== onde tem a
funo semelhantemente ao operador != , mas retorna TRUE se os tipos forem diferentes. Se a
varivel for do tipo booleano, podemos compar-los assim:
$a == TRUE, $a == FALSE
Obs.: or e and tem procedncia maior que && ou ||, ou seja, em uma comparao extensa, onde
ambos esto aplicados. Eles tem prioridade de executar sua comparao primeiro.
O resultado ser 17, pois o operador * tem maior precedncia em relao ao operador +. Primeiro
ocorre a multiplicao 2*6, resultando em 12, em seguida a soma de 5 + 12. Caso desejar realizar a
operao com o operador + para s em seguida realizar a operao com o operador *, temos que
fazer conforme o exemplo abaixo:
Observe que utilizamos os parnteses para determinarmos quem deve ser executado primeiro, assim
alterando o resultado para 42. Os parnteses determina qual bloco de cdigo executa primeiro, e
tambm serve para isolar determinadas operaes. Veja mais um exemplo onde as operaes so
feitas separadamente. Primeiro executa a soma, em seguida a subtrao e s ento executado a
multiplicao, imprimindo um resultado fina 21 :
Exemplo:
A tabela seguinte mostra a precedncia dos operadores, da maior precedncia no comeo para os
de menor precedncia.
Operador Descrio
! ++ Negativo, negao, incremento e decremento
*/% Multiplicao, diviso e resto da diviso
+ - . Adio, subtrao e concatenao
> < >= <= Maior que, menor que, maior ou igual e menor ou igual
== != < > Igual e diferente
&& E
|| OU
= += -= *= /= %= Operadores de atribuio
AND E com menor prioridade
XOR Ou exclusivo
OR Ou com menor prioridade
importante lembrar que primeiro o PHP executar todas as operaes que estiverem entre
parnteses, se dentro dos parnteses houver diversas operaes, a precedncia dos operadores ser
utilizada para definir a ordem. Aps resolver todas as operaes dos parentes, o PHP volta a
resolver o que esta fora dos parnteses baseando-se na tabela de precedncia de operadores.
Havendo operadores de mesma prioridade o PHP resolver a operao da esquerda para direita.
Tambm podemos trabalhar com procedncia de parnteses, fazendo associaes com um ou mais
operadores, observe o seguinte exemplo:
print( ..... );
?>
12) Observe o cdigofonte abaixo e diga qual o resultado booleano final. Justifique sua resposta.
<?
$a = 12.0 < 11.2;
$b = 10*2-3 > 19%3+10;
$c = 10;
print( ($a || $c = 10 && $b) ? "true" : "false");
?>
8.2. IF e ELSE
Essa estrutura condicional est entre as mais usadas na programao. Sua finalidade induzir um
desvio condicional, ou seja, um desvio na execuo natural do programa. Caso a condio dada pela
expresso seja satisfeita, ento sero executadas a instrues do bloco de comando. Caso a condio
no seja satisfeita, o bloco de comando ser simplesmente ignorado. Em lgica de programao o
que usamos como SE(expresso) ENTO { comando:}.
Sintaxe: Exemplo:
if(expresso)
comando;
if(expresso){
comando1;
comando2;
comando3;
}
Caso a condio no seja satisfatria (FALSE), podemos atribuir outro comando pertencente ao IF
chamado ELSE, como se fosse a estrutura SENO em lgica de programao.
Sintaxe: Exemplo:
if(expresso)
comando;
elese
comando;
if(expresso){
comando1;
comando2;
comando3;
}else{
comando1;
comando2;
comando3;
}
Nesse exemplo temos uma expresso booleana onde retorna falso, com isso o IF no executa,
passando a execuo para o eles, que por sua vez executa e atribu o valor menor idade a varivel
$texto. Em determinadas situaes necessrio fazer mais de um teste, e executar condicionalmente
diversos comandos ou blocos de comandos. Isso o que podemos chamar de If's encadeados,
onde usamos a estrutura IFELSE. Para facilitar o entendimento de uma estrutura do tipo:
Sintaxe: Exemplo:
if(expressao1)
comando1;
else
if(expressao2)
comando2;
else
if(expressao3)
comando3;
else
comando4;
Exerccio rpido:
1) Faa uma script em PHP que possua 4 notas de um aluno(cada uma em uma varivel). Depois
calcule e imprima a mdia aritmtica das notas e a mensagem de aprovado para mdia superior ou
igual a 7.0 ou a mensagem de reprovado para mdia inferior a 7.0.
Professor Renato Almansa da Silva Curso Tcnico em Informtica
PHP e MySQL 76
2)Faa uma script em PHP que receba a idade de um nadador(representada por uma varivel
chamada $idade) e imprima a sua categoria seguindo as regras:
Categoria Idade
Infantil A 5 - 7 anos
Infantil B 8 - 10 anos
Juvenil A 11- 13 anos
Juvenil B 14- 17 anos
Snior Maiores de 18 anos
Isso se aplica quando queremos uma estrutura resumida, onde podemos ter um resultado mais
direto, como por exemplo, atribuir um valor a uma varivel dependendo de uma expresso. Observe
o exemplo abaixo onde envolvemos uma varivel do tipo string, porm o valor atribudo a essa
varivel dever ser de acordo com o valor da idade:
uma estrutura parecida com IF e ELSE, onde dependendo da expresso booleana podemos
executar um bloco ou no.
Exerccio rpido:
1) Faa uma script em PHP que receba um nmero representado por uma varivel. Verifique se
este nmero par ou mpar e imprima a mensagem.
8.4. SWITCH
Observe que quando temos muitos if's encadeados estamos criando uma estrutura que no
considerada uma boa prtica de programao. Para resolver esse problema temos uma estrutura
onde sua funcionalidade semelhante ao IFELSE. O comando SWITCH uma estrutura que
simula uma bateria de teste sobre uma varivel. Frequentemente necessrio comparar a mesma
varivel com valores diferentes e executar uma ao especifica em cada um desses valores.
Sintaxe: Exemplo
switch(expresso) {
case valor 1:
comandos;
case valor 1:
comandos;
case valor 1:
comandos;
case valor 1:
comandos;
...
}
Mas o que aconteceria se no tivermos um valor que seja satisfatrio aos casos existentes no
switch? A resposta pra isso bem simples, nenhum dos blocos seria executados, porm temos um
comando onde determinamos uma opo padro caso nenhuma das outras venha ter resultado que
satisfaa a expresso passada para o switch chamada default (padro).
Veja um exemplo:
O comando default pode ser inserido em qualquer lugar dentro do switch, porm caso
isso acontea, o uso do comando break deve ser adicionado para evitar que os case's
abaixo sejam executados.
A partir de agora trabalharemos as estruturas de repetio. Elas muito utilizadas nas linguagens
de programao.
Exerccio rpido:
1) Faa um script em PHP usando switch, onde receba uma varivel e mostre as seguintes opes:
1 - mdulo.
2 - somar.
3 - subtrair.
4 - multiplicar.
5 - dividir.
8.5. WHILE
O WHILE uma estrutura de controle similar ao IF, onde possui uma condio para executar um
bloco de comandos. A diferena primordial que o WHILE estabelece um lao de repetio, ou
seja, o bloco de comandos ser executado repetitivamente enquanto a condio passada for
verdadeira. Esse comando pode ser interpretado como:
ENQUANTO(expresso) FAA{ comandos...}.
Sintaxe:
while (expresso)
{
comandos;
}
Quando estamos usando um lao de repetio, podemos determinar quantas vezes ele deve ou no
se repetir. Isso pode ser feito de forma manual, onde o programador determina, ou
automaticamente, onde quem vai determinar fluxo de execuo o cdigo-fonte atravs de funes
do PHP, funes estas j existentes. Por exemplo, a funo sizeOf.
Para trabalharmos com essa contagem de quantas vezes o lao deve se repetir, usaremos incremento
ou decremento de uma varivel conforme vimos no capitulo de operadores em PHP.
Resultado: 123456789
Nesse exemplo criamos um lao de repetio que tem como condio $a < 10, a cada lao
executado um incremento na varivel $a, fazendo com que o seu valor aumente at a condio no
ser mais satisfatria.
Dica: Tenha cuidado quando estiver trabalhando com loop's (lao de repetio),
pois caso a expresso passada esteja errada, pode ocasionar em um loop infinito
fazendo com que o bloco de cdigo se repita infinitamente. Isso pode ocasionar
um travamento do navegador ou at mesmo do prprio servidor WEB.
Vamos ver agora um exemplo em que o lao se repete de forma automtica, onde quem determina o
loop uma funo do PHP e no um numero determinado pelo programador.
A funo strlen() recebe uma string e retorna a quantidade de caracteres incluindo tambm os
espaos em branco. Ele poderia ser aplicado diretamente no echo, mas no exemplo, ele determina a
quantidade de loop's.
8.6. DO...WHILE
O lao do...while funciona de maneira bastante semelhante ao while, com a simples diferena que a
expresso testada ao final do bloco de comandos. O lao do...while possui apenas uma sintaxe que
a seguinte:
Sintaxe:
do {
comando;
...
comando;
} while (expresso);
Exemplo:
Resultado: 123456789
Dica: Talvez na criao de alguma pgina ou sistema web, seja necessrio executar
um bloco de cdigo existente em um lao de repetio pelo menos uma vez, nesse
caso podemos usar o do...while.
Exerccio rpido:
1) Faa um script que conte de -1 at -100 usando do while.
2) Faa um script que imprima na tela somente nmeros pares de 2 at 20 com do while.
8.7. FOR
Outra estrutura semelhante ao while o for, onde tem a finalidade de estabelecer um lao de
repetio em um contador. Sua estrutura controlada por um bloco de trs comandos que
estabelecem uma contagem, ou seja, o bloco de comandos ser executado determinado nmero de
vezes.
Sintaxe:
Parmetros Descrio
inicializao Parte do for que executado somente uma vez, usado para inicializar uma varivel.
condio Parte do for onde declarada uma expresso booleana.
incremento Parte do for que executado a cada interao do lao.
Lembrando que o loop do for executado enquanto a condio retornar expresso booleana
verdadeira. Outro detalhe importante que podermos executar o incremento a cada lao, onde
possibilitamos adicionar uma varivel ou mais. Mostraremos agora um exemplo fazendo um
comparativo entre a estrutura de repetio do while e tambm a do for de forma prtica.
Observe nesse exemplo uma proximidade muito grande do comando while. Apesar de ser
funcional, no uma boa prtica de programao utilizar desta forma.
Exerccio rpido:
1) Faa um script que receba duas variveis $a e $b, logo aps imprima os nmeros de intervalos
entre eles com o uso de for. ex: a=5 ,b = 11, imprime : 5,6,7,8,9,10,11.
8.8. FOREACH
O foreach um lao de repetio para interao em array's ou matrizes, o qual estudaremos com
mais detalhes no prximo captulo. Tratasse de um for mais simplificado que compe um vetor ou
matriz em cada um de seus elementos por meio de sua clusula AS.
Sintaxe:
foreach( expresso_array as $valor){
comandos;
}
Exemplo:
Resultado:
ana
maria
joo
alex
Veremos adiante que um array uma varivel composta por vrios elementos. No caso do exemplo
anterior, esses elementos so nomes de pessoas. A finalidade do foreach justamente a cada lao,
pegar um desses valores e atribuir a uma varivel $nome at que tenha percorrido todo array e
assim, finalizar o lao. Tambm podemos saber em qual posio o elemento se encontra no array,
para isso basta adicionar uma nova varivel logo aps o AS seguido de =>.
Observe o exemplo:
Resultado:
0 ana
1 maria
2 joo
3 alex
Nesse exemplo observamos que cada elemento do array possui um ndice (chave), imprimindo na
tela o numero da posio e o valor guardado.
8.9. BREAK.
Outro comando importante o break, usado para abortar (parar) qualquer execuo de comandos
como SWITCH, WHILE, FOR, FOREACH, ou qualquer outra estrutura de controle. Ao encontrar
um break dentro de um desses laos, o interpretador PHP interrompe imediatamente a execuo do
lao, seguindo normalmente o fluxo do script.
Sintaxe:
while....
for....
break <quantidades de nveis>;
Vamos ver um exemplo com o uso de break dentro de um lao de repetio (no caso o for), onde
criamos um lao infinito, porm colocamos um if com a condio de parar o lao atravs do break.
Observe:
Podemos notar nesse exemplo a criao de um lao(loop) infinito, que ocorre quando tiramos a
condio do for, ou atribumos for( ; true ; ), porm a condio fica na responsabilidade do if,
quando o valor de $a e igual a 10, faz com que o if execute o break, fazendo com que o lao pare
de funcionar.
Mas se tivssemos mais de um lao, como poderamos definir qual deles deixaria de funcionar?
Para responder essa pergunta usamos a quantidades de nveis que pode existir em um
break, observe o exemplo abaixo:
Resultado:
Observe que definisse qual nvel podemos parar, ou seja, o primeiro nvel onde o break est
localizado, no exemplo citado temos dois nveis, e determinamos pelo break 2; que o segundo
for( que o de fora! ) deixaria de funcionar.
8.10. CONTINUE
A instruo continue, quando executada em um bloco de comandos for/while, ignora as instrues
restantes at o fechamento em }. Dessa forma, o programa segue para a prxima verificao da
condio de entrada do lao de repetio, funciona de maneira semelhante ao break, com a
diferena que o fluxo ao invs de sair do lao volta para o incio dele. Veja um exemplo:
Resultado: 0,2,4,6,8,10,12,14,16,18,
Podemos observar a seguinte lgica no exemplo acima:
Criamos um lao que tem 20 interaes de repetio. Logo aps temos um if, onde, quando o resto
da diviso por 2 for igual a 0 (numero par), o valor booleano ser false. Quando no for igual a 0,
significa que a varivel $i um numero impar( ex: 5%2 = 1), ento temos um valor booleano
true. Isso significa que o if executa somente quando os numero forem impares. Adicionamos um
continue, que ao executar o if, faz com que volte novamente para o incio do for, impedindo de
alcanar o echo em seguida. Com isso, em vez de mostramos os nmeros impares, imprimimos
somente os nmeros pares incluindo o 0. Resumimos que o cdigo s passa adiante quando o if
no executa o continue.
Fluxograma:
Assim como o break, tambm podemos definir em qual nvel queremos que a execuo continue.
Veja o exemplo abaixo:
Resultado:
Podemos observar ento o uso de continue dentro de um lao infinito. Ele faz com que o lao de
nvel 3 seja executado toda vez que a execuo passe pela linha 10 do cdigo, logo, impede que o
programa fique sempre executando dentro do while de nvel 1. Com isso, o while da linha 4 do
cdigo tem um ciclo de vida de 5 laos.
Observe tambm que os dois ltimos echo's nunca sero alcanados, pois o comando continue
impede que o fluxo do cdigo passe adiante, fazendo voltar ao nvel determinado.
Resumindo: O continue usado dentro de estruturas de loops para saltar o resto da execuo do
loop atual e continuar a execuo na avaliao do estado, em seguida, o incio da prxima
execuo.
Fluxograma:
IF($valor%2==0)
echo $valor. um numero par;
ELSE
echo $valor. um numero impar;
d)Exemplo prtico: foi passado o numero inicial 8 e o final 15, ento o script PHP dever imprimir
o intervalo entre esse numero ou seja 8,9,10,11,12,13,14,15, mostrando quais deles so pares e
quais so impares.
Um array no PHP atualmente um conjunto de valores ordenado. Podemos relacionar cada valor
com uma chave, para indicar qual posio o valor est armazenado dentro do array. Ele otimizado
de vrias maneiras, ento podemos us-lo como um array real, lista (vetor), hashtable (que uma
implementao de mapa), dicionrio, coleo, pilha, fila e provavelmente muito mais. Alm disso,
o php nos oferece uma gama enorme de funes para manipul-los.
A explicao dessas estruturas esto alm do escopo dessa apostila, mas todo contedo aqui
abordado trs uma boa base para quem estar iniciando o contedo de array.
9.1. Criando um Array
Arrays so acessados mediante uma posio, como um ndice numrico. Para criar um array pode
se utilizar a funo array([chave =>] valor, ). Exemplo:
Sintaxe:
$nomes = array('Maria','Joo','Alice','Alex');
ou
$nomes = array(0=>'Maria', 1=>'Joo', 2=>'Alice', 3=>'Alex');
Nessa sintaxe temos duas formas de declarar uma varivel do tipo array. Onde a chave o ndice
podem ser de forma automtica como no primeiro exemplo, ou manual como no segundo. Outro
detalhe importante que: Todo array comea pela chave ou ndice de numero 0, quando o mesmo
no declarado.
Tambm temos outras formas de criar um array, onde simplesmente podemos adicionar valores
conforma a sintaxe abaixo:
$nome[] = 'Maria';
$nome[] = 'Joo';
$nome[] = 'Carlos';
$nome[] = 'Jos';
A figura abaixo representa um array que tem como valor representao de cores, e possui dez
posies, cada posio representa uma cor, seu ndice (chave) vai de 0 at 9. Veja:
Em cdigo temos:
$var = array('texto1'=>'valor1','texto2'=>'valor2',...,'textoN'=>'valorN');
Observe que quando usamos arrays associativos, a compreenso mais fcil, dando mais
legibilidade ao cdigo. Porm no utilizado quando usamos um array dentro de um lao (loop),
mas em outros casos sempre bom utilizar arrays associativos. Veja um exemplo:
Dessa forma podemos acessar o array. Basta determinar o nome do array e qual a chave, onde cada
chave tem um valor j determinado. Resultar em um erro o uso de uma chave errada.
9.3. Interaes
Quando falamos de interaes em um array, estamos dizendo o mesmo que percorrer esse array
usando mecanismos da prpria linguagem. Como isso as interaes podem ser feitas de vrias
formas, mas no PHP podem ser iterados pelo operador FOREACH que j vimos anteriormente.
Exemplo:
Resultado:
Esse tipo de interao muito utilizado, principalmente quando temos arrays associativos.
nome_do_array[ chave_de_acesso ];
Temos que ter cuidado ao passar uma chave para o array, pois ela deve conter o mesmo nome de
qualquer uma das chaves existentes no array. Caso a chave no exista, o valor no poder ser
resgatado. A sintaxe acima retorna um valor contido no array, por esse motivo temos que atribuir
esse valor como mostra o exemplo abaixo:
Resultado: telefone.
9.5. Alterando um Array
Podemos alterar qualquer valor de um array. muito semelhante ao acesso, onde, a diferena est
na chamada do array. nesse momento que atribumos um novo valor.
Veja a sintaxe:
Resultados:
Vimos no exemplo anterior o valor da posio 1 do array ('telefone') foi alterada para sobrenome.
Vale ressaltar que esse array tem suas chaves definidas de forma automtica. A primeira posio
0, a segunda 1, e assim sucessivamente. Veja mais um exemplo onde alteramos o valor, mas
usando o operador de atribuio += e concatenao .=:
Resultados:
Arroz Tio Joo
1.98
Podemos observar que assim como as variveis comuns, a forma de alterar o valor de um array
igual. A diferena est na chamada do array, pois temos que passar a chave alm do valor que
queremos atribuir. Outro detalhe importante o tipo de valor, onde supostamente devemos atribuir
os tipos compatveis. Ou seja, se o valor atribudo a chave produto for do tipo string, no podemos
usar os operadores de atribuio para atribuir um outro tipo, porm podemos mudar o tipo do valor
pelo operador de atribuio simples (=).
Exemplo:
$var[2] += 1.90; // o tipo um ponto flutuante antes e depois.
$var[2] = 'bom dia' ; // agora temos a mudana de tipo ponto flutuante para string.
Cdigo:
Observe que temos uma chave para representar a linha e outra para representar a coluna, assim,
determinando uma matriz 4x4. Podemos ver tambm que inicializamos um array dentro do outro.
Cada subarray uma linha, e cada elemento do array maior representa as colunas.
Para acessarmos o valor de um array multidimensional, basta colocar as duas ou mais chaves da
posio que queremos acessar. muito semelhante ao array de uma nica dimenso.
Observe o acesso aos exemplos anteriores:
Sintaxe:
nome_do_array[ chave_1 ][ chave_2 ]...[chave_n] ;
Exemplo:
Dessa forma podemos acessar o elemento numrico 1.2 que estar guardado na posio linha 1
coluna 2, lembrando que o primeiro elemento de um array 0.
Abaixo, um exemplo que acessa todos os valores do array e imprime com quebra de linha:
resultado:
Explicando o cdigo:
Linha 2 criamos um array de duas dimenses.
Linha 7 temos um foreach para percorrer o primeiro array, ele retorna na varivel $linha os sub
arrys contido no array maior.
Linha 8 agora temos outro foreach que vai percorrer os valores dos arrays passando pra varivel
$linha.
Linha 9 criamos uma varivel $i para contar os elementos.
Linha 10 Imprime os valores.
Linha 11 temos um IF, quando $i for igual a 4, significa que podemos executar o cdigo
pertencente ao If, determinando que chegou ao quarto elemento do array.
Linha 12 Quebra de linha com o <br>.
Linha 13 Zera a varivel $i para comear a contagem de novo.
Em PHP temos um conjuntos de funcionalidades e que j vem prontas para serem utilizadas.
Tratasse de funes que j esto predefinidas, voc pode encontr-las facilmente no site php.net.
Abordaremos agora funes utilizadas exclusivamente para manipulao de array, funes de
acesso, ordenao, dentre outras. Obviamente que no falaremos de todas, pois existem muitas
funes, mas mostraremos as mais utilizadas, e outras que so definidas como principais.
var_dump
Essa funo muito usada por programadores que pretendem realizar debug (anlise mais
detalhado para encontrar supostos erros). Observe um exemplo prtico:
Sada no Browser:
print_r
Imprime o contedo de uma varivel assim como var_dump(), porm com um formato menos
detalhado e mais legvel ao programador. Exemplo:
cdigo:
Sada no Browser:
Dica: Ao olhar o cdigo fonte da pgina aberta, nota-se o cdigo bem organizado,
porm os comentrios no podem ser vistos. Procure olhar o cdigofonte sempre
que tiver dvida de que cdigo HTML o PHP est gerando. Clique com boto
direito do mouse, procure cdigo fonte, e observe o que gerado!
array_push
Adiciona elementos ao final de um array. Tem o mesmo efeito de utilizar a sintaxe:
var_dump( nome_do_array , novo_valor)
Exemplo: Resultado:
array_pop(nome_do_array);
Exemplo:
Resultado:
array_shift
Remove um elemento do incio de um array, sintaxe:
array_shift( nome_do_array )
Exemplo:
Resultado:
Como j sabemos como lidar com essas funes, observamos que, basta conhecer a sintaxe, para
montarmos um exemplo. Apresentaremos agora de forma resumida as demais funes.
Essa tabela mostra as funes mais comuns. Derrepente voc pode de deparar com algumas delas
em cdigos j feito, ou baixados da internet. Exemplo disso so as ferramentas CMS, como joomla
ou wordpress, que so feitas em PH. Existem muitas combinaes dessas funes e outras a mais
em seu cdigo-fonte. Veja um exemplos utilizando algumas das funes anteriores.
Resultado:
7)Crie um cdigo PHP onde com os valores do array possa ser impresso na tela com a frase oi,
tudo bem com voc?.
8)Utilizando as posies da sequencia [1][0],[1][1],[0][2],[4][2],[4][0],[4][1],[1][2] do array
palavras, qual frase podemos formular?utilize a funo print() para mostrar na tela do navegador.
9)Construa um cdigo PHP para mostra uma resposta para a pergunta da qusto 7.
(use o comando echo para imprimir na tela.
10)Utilizando a funo sort, imprima em ordem alfabtica os nomes do array nomes.
11)Use o comando array_unshift() para adicionar mais dois nomes no array.
Quando queremos um cdigo funcional para determinado fim, com, por exemplo, fazer um clculo
ou alguma interao dentro do PHP, usamos o que chamamos de funo. As funes so um pedao
de cdigo com o objetivo especfico, encapsulado sob uma estrutura nica que recebe um conjunto
de parmetros e retorna ou no um determinado dado. Uma funo declarada uma nica vez, mas
pode ser utilizada diversas vezes. uma das estruturas mais bsicas para prover reusabilidade ou
reaproveitamento de cdigo, deixando as funcionalidades mais legveis.
Observe um exemplo onde criamos uma funo para calcular o ndice de massa corporal de uma
pessoa (IMC), onde recebe como parmetro dois argumentos. Um a altura representada pela
varivel $altura e o outro o peso representado pela varivel $peso. Passamos como parmetros
para essa funo o peso = 62 e a altura = 1.75. Observe:
Exemplo:
Resultado: 20.244897959184
Nesse exemplo temos a declarao e logo aps a chamada da funo, onde nesse momento que
passamos os dois parmetros na ordem que foi declarada na funo. Lembrando que essa ordem
obrigatria.
Professor Renato Almansa da Silva Curso Tcnico em Informtica
PHP e MySQL 98
Observe mais um exemplo, onde a funo declarada porm no possui a clusula return.
Resultado:
Variveis Globais So variveis declaradas fora do escopo de uma funo, porm tem
visibilidade (pode ser acessada) ao contexto de uma funo sem pass-la como parmetro. Para isso
declaramos a varivel e fazemos a sua chamada logo aps com o uso do termo global. Exemplo:
Resultado: 25
Variveis estticas Podemos armazenar variveis de forma esttica dentro de uma funo.
Significa que ao fazermos isso, temos o valor preservado independente da ultima execuo. Usamos
o operador static para declaramos a varivel. Exemplo:
Resultado: 10,20,30,
Observe que o valor mantido e a cada
chamada acrescentado +10, caso no
exista o static o resultado seria: 10,10,10, .
O exemplo acima mostra que passamos um valor de $a para a funo, porm o valor temos a
garantia que o valor continua integro, ou seja, no foi modificado ao longo do cdigo.
Por Parmetro Para passarmos um valor por parmetro, simplesmente colocamos o operador
& na frente do parmetro que queremos que o valor seja alterado, observe o exemplo abaixo:
Observe agora nesse ultimo exemplo que apenas acrescentamos o operador & no parmetro que
queramos que alterasse a varivel passada como parmetro, fazendo com que o resultado fosse a
soma de 23 + 26 = 49.
Por argumentos variveis O PHP permite outras formas avanadas de passagem
de parmetros, onde o valor e a quantidade so definidas de forma automticas por meio das
funes
func_get_args() e func_num_args().
func_get_args() diz os valores(argumentos) passado para a funo.
func_num_args() diz a quantidade de valores passados para a funo.
Resultado:
O resultado : 139.5
Tambm podemos determinar mais de um retorno desde que eles no sejam acessados ao mesmo
tempo, observe o exemplo abaixo:
10.5. Recurso.
Funo recursiva uma definio usada tanto na programao quanto na matemtica, onde,
significa que uma funo faz a chamada de si mesma na sua execuo. Um exemplo o calculo
do fatorial de um nmero. Observe:
Fatorial de 5: 5! = 5*4!, 4! = 4*3!, 3! = 3*2!, 2! = 2*1! ou 5*4*3*2*1 = 120.
Exemplo:
Resultado: 120
Anotaes:
O comando chmod 777 da todas as permisses possveis na pasta www onde trabalharmos na
criao de nossos arquivos.
Para abrir ou criar um arquivo utilizaremos o seguinte comando abaixo:
fopen
Com esse comando podemos abrir um arquivo e retornar um identificador. Sua sintaxe e a seguinte:
$identificador = fopen(string_do_arquivo,modo_do_arquivo)
string_do_arquivo definido como o nome do arquivo mais a sua extenso, isso incluindo
ocaminho onde esse arquivo localizado ou no, por exemplo:
/home/aluno/meu_arquivo.txt
Podemos observar um arquivo criado dentro da pasta alunos com o nome meu_arquivo.txt.
modo_do_arquivo nesse parmetro podemos determinar a forma que o arquivo vai ser aberto
com os seguintes valores:
r read, este modo abre o arquivo somente para leitura.
w write, abre o arquivo somente para escrita , caso o arquivo no exista, tenta cri-lo.
a+ append, abre o arquivo para leitura e escrita, caso o arquivo no exista, tenta cri-lo.
Existem outros modos, mas trabalharemos somente com estes.
Aps o uso do comando fopen, temos um identificador apontando para o arquivo, e com ele que
podemos fazer alteraes ou manipulaes. Podemos gravar dados dentro do arquivo com o uso do
seguinte comando:
fwrite
sintaxe:
fwrite(indentificador,contedo)
O uso de \n antes da palavra rua faz com que ocorra uma quebra de linha escrevendo o resto do
contedo na linha abaixo. Aps a execuo do script (colocando http://localhost no navegador e o
nome do script criado), abrimos o arquivo de texto (meu_arquivo.txt) com um editor e percebemos
o resultado final. Observe mais um
exemplo: Resultado:
No exemplo, fizemos a chamada do comando fwrite trs vezes e escrevemos a cada chamada um
valor diferente concatenando com \n.
exemplo:
Toda vez que abrimos um arquivo com
fopen, devemos fech-lo com o
comando fclose conforme o exemplo
ao lado.
string_do_arquivo da mesma forma que definida no comando fopen, usa-se o caminho com o
nome do arquivo ou simplesmente o nome do arquivo caso ele exista na mesma pasta onde o
arquivo PHP que contm o comando foi criado.
Exemplo: Resultado:
Nesse exemplo utilizamos o arquivo anterior onde foi escrito trs linhas, porm efetuamos a leitura
somente da linha 1 (ndice 0) e linha 2 (ndice 1). Oura forma percorrer o array usando um
foreach(),dessa forma podemos ler todas as linhas existentes no arquivo, veja:
copy(string_origem,string_destino)
exemplo:
Caso tudo ocorra corretamente, o resultado apresentado no navegador Cpia efetuada, e ser
criado uma cpia dentro da pasta com o nome meu_novo_arquivo.txt. Vale lembrar que podemos
tambm passar o caminho completo para onde deve ser copiado, como por exemplo:
/home/aluno/meu_novo_arquivo.txt
Aps executarmos
isso
No navegador,
percebemos as
mudanas
ocorridas dentro do
diretrio.
mkdir(string_localizao, int_modo);
rmdir
Apaga um diretrio. Sintaxe:
rmdir(nome_diretrio);
Observe que o comando getcwd obtm o caminho completo de onde o arquivo PHP que contm o
cdigo-fonte estar guardado.
Crie um arquivo de texto chamado frases.txt usando o comando fopen, e responsa as questes
3,4,5,6,7
3) Grave uma mensagem dentro do arquivo criado.
4) Com base no arquivo criado, utilize o comando fwrite para ler o mesmo imprimindo na tela do
navegador o contedo do arquivo.
5) Abra o arquivo frases.txt com um editor de texto, adicione cinco palavras, cada uma em uma
linha diferente, aps isso utilize o comando file, para efetuar a leitura do arquivo, e imprima na tela
a primeira e ultima palavras com o comando echo.
6) Crie uma cpia do arquivo renomeando o novo arquivo para palavras.txt.
7) Agora apague o arquivo frases.txt com o comando unlink.
8) Crie um diretrio com o comando mkdir e copie o arquivo palavras.txt para a pasta criada e
apague o anterior, tudo com comandos PHP.
9)Crie um cdigo que imprima na tela todo o cominho de pastas onde se localiza o arquivo
palavras.txt.
12.1. Formulrios
Podemos definir formulrio como um conjunto de campos disponveis ao usurio de forma
agrupada para serem preenchidos com informaes requisitada pela aplicao (sistemas web ou
pginas). Um formulrio composto por vrios componentes, alm de possuir botes de ao, no
qual define o programa que processar os dados.
Em uma aplicao determinamos ento a entrada de dados ( no caso os formulrios ), e a sada de
dados, que toda e qualquer informao apresentada ao usurio pelo browser, de forma que ambas
tenham uma ligao lgica e possa retornar um resultado onde todos os componentes da aplicao
trabalhem de forma coerente.
Elementos de um formulrio.
Para criarmos um formulrio, utilizamos a tag <form> e dentro dela podemos dispor diversos
elementos, onde, cada um deles representa uma propriedade em particular. A seguir explicaremos
os principais componentes de um formulrio.
Criando um formulrio:
Todo formulrio deve conter no mnimo as seguintes caractersticas, observe:
A tag input pode ser composta por vrios elementos onde neles podemos definir o tipo, nome, e o
valor padro alm de outras propriedades que no apresentaremos nessa apostila.
name Nome atribudo ao componente para sua identificao.
value Valor padro que pode ser atribudo no formulrio.
type Tipo de input, nele onde definimos o tipo elemento o input vai representar.
Observe a tabela abaixo com a definio dos tipos que podemos atribuir ao elemento type do input.
type Descrio Exemplo:
texto Elemento utilizado para entra de texto simples,
um dos mais utilizados.
password Elemento utilizado para entrada de senhas,
exibe * no lugar dos caracteres inseridos pelo
usurio.
checkbox Utilizado para exibir caiar de verificao, muito
utilizado para perguntas booleanas.
radio Exibe botes para seleo exclusiva, utilizado
para seleo de apenas um item.
Observe que definimos uma caixa de texto com 5 linhas e 27 colunas, isso define o tamanho que
essa caixa vai ter dentro do formulrio.
Resultado:
Tela de Cadastro:
cdigo-fonte:
Resultado:
Com esses exemplos, j podemos trabalhar com as informaes at agora mostrada. Para isso
vamos conhecer os dois principais mtodos de envio de dados de um formulrio para um arquivo
PHP.
Link informao estamos enviando dois valores via mtodo GET, um contendo 3, e o outro 4,
para o arquivo gravar.php .
Link Entrar estamos enviando dois valores via mtodo GET, um contendo 24, e o outro
annimo, para o arquivo gravar.php .
Formulrio(<form>) Envias as informaes preenchidas no input nome via GET
para o arquivo gravar.php.
Browser:
Resultado:
Com o uso do mtodo post, as informaes ficam invisveis ao usurio, isso evita que alguma causa
mal-intencionada venha tornar os dados inconsistentes (dados sem fundamentos ou falsos).
A varivel global $HTTP_USER_AGENT tem como finalidade retornar informaes do cliente que
est acessando o arquivo PHP pelo browser, abaixo um exemplo desse retorno:
J vimos que a varivel $HTTP_USER_AGENT retorna uma string com vrias informaes, com
isso podemos utilizar a funo strpos(), que tem como finalidade procurar valores de uma string
menor dentro de uma string maior. Podemos desta forma otimizar o nosso cdigo. Sintaxe:
strpos( string_maior , string_menor )
Nesse exemplo procuramos as palavras Firefox e MSIE dentro do valor retornado pela varivel
global $HTTP_USER_AGENT. Dessa forma, podemos tratar o resultado comparando-o com
0ou seja, se a palavra existir, significa que seu valor diferente de 0. O resultado impresso na
tela de acordo com o navegador do cliente.
Exemplo de requisio HTTP_USER_AGENT:
12.5. Cookies
Cookies so mecanismos para armazenar e consultar informaes. Eles so armazenados na
maquina do cliente que acessa ao servidor php, e possui vrias atribuies que so definidas pelo
programador, por exemplo: imagine uma loja virtual, onde o cliente colocou em seu carrinho de
compras vrios produtos, mas por algum motivo ele no concluiu a compra, tendo que desligar a
maquina que foi utilizada para fazer o acesso. No dia seguinte o cliente entra no mesmo site e
percebe que todos os itens ainda esto no carrinho de compra do jeito que ele deixou, esperando a
concluso da compra. Nesse exemplo, podemos perceber que as informaes foram gravadas na
maquina do cliente atravs dos cookies, que so simplesmente arquivos gerados pela pgina
acessada dentro de alguma pasta do navegador que existe exclusivamente para esses arquivos.
O PHP atribui cookies utilizando a funo setcookie que deve ser utilizada antes da tag <html>
numa pgina. Alm disso o uso de cookies no recomendado quando se trata de informaes
sigilosas. Os dados dos cookies so armazenados no diretrio de arquivos temporrios do visitante,
sendo facilmente visualizado por pessoas mal intencionadas.
Alm da opo aceitar cookies que pode ser desativada a qualquer momento pelo visitante. Mas
em cada navegador essa opo pode mudar de nome. Observe o comando abaixo:
setcookie
Sua sintaxe possui muitos parmetros, abaixo est representada todos os valores que podem ser
atribudo ao setcookie, mas vale ressaltar que no utilizaremos todos eles, somente os principais,
veja sua sintaxe.
Setcookie(nome_do_cookie,seu_valor,tempo_de_vida,path,
domnio,conexo_segura)
Atributo Descrio
nome_do_cookie o nome que, posteriormente, se tornar a varivel e o que o servir
de referncia para indicar o cookie.
seu_valor o valor que a varivel possuir. Esse valor pode ser de todos os tipos.
o tempo, em segundos, que o cookie existir no computador do
seu_valor visitante. Uma vez excedido esse prazo o cookie se apaga de modo
irrecupervel. Se esse argumento ficar vazio, o cookie se apagar
quando o visitante fechar o browser.
path endereo da pgina que gerou o cookie automtico
domnio domnio ao qual pertence o cookie automtico
conexo_segura Indica se o cookie dever ser transmitido somente em uma conexo
segura HTTPS.
Criamos ento uma string, logo aps a funo setcookie recebendo como parmetro somente o seu
nome e o valor a ser gravado.
Usaremos o navegador Mozilla Firefox para visualizarmos o cookie criado, para isso basta digitar o
endereo http://localhost na url, e logo aps ir na opo: Ferramentas Propriedades dapgina
Segurana Exibir cookie. Lembre-se de criar o cdigo acima primeiro e depois fazer a chamada
pelo navegador de sua maquina. Se tudo ocorrer corretamente dever aparecer a seguinte tela:
Veja que outras informaes como
caminho, enviar, e validade no foram
especificados, porm podemos determina-
los na hora da criao do cookie dentro do
cdigo php.
Mostraremos agora um cdigo onde
atribumos o tempo de vida do cookie, para
Nome do Cookie isso devemos capturar o tempo com a
Valor do cookie
funo time() atual e som-lo ao tempo que
queremos em segundos, isso faz com que o
cookie exista na maquina do cliente de
acordo com a quantidade de tempo
determinado pelo programador, observe um
exemplo onde atribuirmos mais esse
parmetro o funo setcookie:
Exemplo:
$tempo = time()+(3600*24*7);
Validade:
Validade de 7 dias a partir do dia 12.
Acessando um cookie:
Para acessarmos o valor gravado em um cookie bem simples, basta utilizar o comando
$_COOKIE['coloque_aki_o_nome_do_cookie'], exemplo:
O resultado de acordo com a quantidade de vezes que o cliente entrou no site ou atualizou o mesmo.
12.6. Sesso
Sesses so mecanismos muito parecidos com os tradicionais cookies. Suas diferenas so que
sesses so armazenadas no prprio servidor e no expiram a menos que o programador queira
apagar a sesso. As sesses so mtodos de manter (ou preservar) determinados dados
a mant-los ativos enquanto o navegador do cliente (o internauta) estiver aberto, ou enquanto a
sesso no expirar (por inatividade, ou porque em algum ponto voc mandou que ela expirasse).
Para criarmos uma sesso utilizaremos a funo abaixo:
Agora trabalharemos com essa sesso, primeiro podemos determinar o tempo de vida da sesso
com o seguinte comando:
Neste caso, session_cache_expire vem antes de session start. Porque primeiro ele avisa que a
sesso, quando iniciada, deve expirar em 5 minutos, e depois a inicia.
Criamos uma sesso com o nome minha_sessao(no uma boa prtica de programao usar acentos
em nomes de variveis ou qualquer outra nomeao) e atribumos a ela o valor gravado na varivel
string $var. Essas informaes ficam gravadas no servidor, logo aps podemos resgatar o valor da
seguinte forma:
Observe que o comando $_SESSION tem seu tratamento igual a uma varivel do tipo Array. Para
resgatar o valor da sesso, basta fazer a chamada do comando passando o nome da sesso, no caso
minha_sessao. O exemplo anterior foi adicionado em um outro arquivo, por esse motivo temos
que chamar novamente o comando session_start(), para trazermos ao arquivo todas as
regras usadas em sesso no PHP.
Abaixo temos um exemplo com o uso da funo isset(), que verifica se uma varivel existe ou no,
retornando um valor booleano( true ou false ):
Para desativarmos uma sesso podemos utilizar dois tipos de mecanismos: um deles o uso da
funo session_destroy() que tem como finalidade destruir todas as sesses criada pelo usurio, a
outra forma desalocarmos a sesso criada com o uso da funo unset().
Uso de session_destroy():
Uso de unset():
Usamos unset() quando queremos desalocar uma determinada sesso, imaginamos que o usurio ao
acessar uma determinada pgina, tenha criado vrias sesses com nomes diferente. Os nomes das
sesses so determinada pelo programador, porm ao clicar em um link, o mesmo tem que destruir
a seo escolhida. O exemplo abaixo destri a sesso especificada:
Resultado:
Nesse exemplo podemos notar que o cdigo existente no arquivo_teste.php foi inserido dentro do
arquivo index.php, tendo como resultado a execuo dos dois cdigos como se fossem apenas um,
esse recurso muito utilizado, pois podemos incluir at mesmo cdigos de pginas inteiras em um
arquivo.
require<arquivo>:
Comando muito parecido ao include. Difere somente na manipulao de erros. Enquanto o include
produz uma warning, o require uma mensagem de Fatal Error caso o arquivo no exista.
include_once<arquivo>:
Tem funcionalidade semelhante ao include, a diferena que caso o arquivo informado j esteja
includo, esse comando no refaz a operao, ou seja, o arquivo includo apenas uma vez. Este
comando til para garantir que o arquivo foi carregado apenas uma vez. Caso o programa passe
mais de uma vez pela mesma instruo, evitar sobreposio de arquivo.
require_once<arquivo>:
Tem funcionalidade parecida com o comando require. A diferena justamente caso o arquivo j
tenha sido includo no programa, pois ele no carrega novamente o cdigo. muito semelhante ao
include_once, evitando redeclaraes ou sobreposies, porm a mensagem exibida caso o arquivo
no exista de Fatal Error.
Os programadores devem prestar muita ateno nas mensagens de erro, afinal nenhum programador
quer por no ar um sistema que quando o primeiro visitante entra aparea uma mensagem de erro.
Para evitar essas inconvenincias use sempre um @ antes de cada chamada as funes. Se a
opo track_errors no arquivo php.ini estiver habilitada, a mensagem de erro poder ser
encontrada na varivel global $php_errormsg. Para exibir a mensagem direta no navegador
procure ativar a opo display_errors, as funes sero ativadas para On(ligada) ou
Off(desligada).
O arquivo php.ini no linux geralmente fica na pasta: /etc/php5/apache2/php.ini .
Veja o Exemplo:
Resultado:
Essa funo deixaria todos os caracteres em minsculo, mas seu erro foi ignorado, no exibindo
nenhuma mensagem de erro.
Lembrando: podemos utilizar tag's curtas no PHP <? ?> em vez de tags
normais <?php ?>, mas isso vai depender da configurao do PHP (php.ini),
em alguns casos no funciona.
2)Utilize o mtodo Get para visualizar os dados do array na URL do navegador ao clicar no boto
enviar.
6)Crie um arquivo chamado dados.php, nesse arquivo dever conter os seguintes requisitos:
Os dados do formulrio da questo 1 dever ser enviado para esse arquivo via metodo
POST.
O aquivo dados.php dever conter cinco variveis, cada uma para determinado campo, exemplo:
$nome = $_POST['nome'];
Os valores dever ser impresso na tela.
8)Crie um cookie gravando nele o seu nome, logo aps abra o Firefox e Exiba o valor gravado.
9)Crie um arquivo chamado criar_sessao.php, utilize comando PHP para cria uma seo com a
durabilidade de 3 minutos e adicione o valor sesso ativa.
10)Crie um novo arquivo chamado ler_sessao.php para verificar se a sesso criada na questo 9
existe ou no. Utilize o comando $_SESSION para ler o valor nela contido e imprima na tela.
mysql -u root -p
Nome do usurio.
u usurio, define o nome do usurio.
p password, pedido de senha.
Logo aps esse comando uma senha ser pedida. Digite a senha que foi definida na instalao do
banco. Depois de logarmos visualizaremos a seguinte tela:
Agora estamos logado no gerenciador de banco de dados MYSQL. Para sair do banco digite: quit
ou exit e logo aps der um enter.
Um banco de dados trabalha basicamente com tabelas, e cada tabela possui uma determinada
quantidade de linhas (registros) e colunas (campos). As informaes so gravadas para futuramente
serem inseridas, alteradas (atualizadas), ou deletadas.
O primeiro passo visualizarmos alguns bancos de dados que vem
como padro, para isso utilizamos comando show databases, veja
ao lado: Sempre utilize ; para finalizar qualquer comando.
Podemos perceber que na maquina que foi utilizado esse comando,
foram encontrados cinco banco de dados.
O MySQL prov um conjunto bem grande de tipos de dados, entre eles podemos
citar os principais:
Tipo de dado Descrio
CHAR(M) strings de tamanho fixo entre 1 e 255 caracteres.
VARCHAR ocupa sempre o menor espao possvel, no entanto 50% mais lento que o tipo CHAR.
INT(M)[Unsigned] nmeros inteiros entre 2147483648 e 2147483647. A opo "unsigned" pode ser usada
na declarao mudando o intervalo para 0 e 4294967295 para inteiros no sinalizados.
TEXT/BLOB: strings entre 255 e 65535 caracteres. A diferena entre TEXT e BLOB que no primeiro
o texto no sensvel ao caso e no segundo sim.
Existem outros tipos de dados, para mais detalhes consulte o site oficial do
MYSQL (http://www.mysql.com/).
Abaixo temos exemplos dessas estruturas:
Tipos de dados e seus
respectivos tamanhos
Novamente com o comando SHOW DATABASE podemos visualizar todos os bancos de dados
inclusive o que acabamos de criar:
Aps criamos o banco de dados alunos,
temos que conectarmo-nos a ele para iniciar
Aqui estar nosso qualquer operao.
bancos de dados. Para isso utilizado comando USE com a
seguinte sintaxe:
USE 'nome_do_banco';
Exemplo:
CREATE TABLE
Uma base de dados pode possuir vrias tabelas, onde cada uma tem seu papel especifico e esto
relacionadas de forma direta ou no, para criarmos uma tabela usaremos a seguinte sintaxe:
CREATE TABLE 'nome_da_tabela' (
'nome_dos_campos' tipo_de_dado(tamanho) 'comandos...',
... ,
...
);
Exemplo:
Nem todo tipo de dado tem um tamanho, como por
exemplo, o tipo DATE. Alm disso, o comando NULL
significa que a informao inicial daquele campo nulo.
Para visualizar detalhes da tabela criada utilize o
comando DESCRIBE 'nome_da_tabela', veja o
exemplo:
Professor Renato Almansa da Silva Curso Tcnico em Informtica
PHP e MySQL 126
Exemplo:
Para exibir as tabelas use o comando
SHOW TABLES;
DROP
Para apagar o banco de dados ou a tabela, usamos o comando DROP com a seguinte sintaxe:
DROP DATABASE 'nome_do_banco'; //Usado para apagar o banco de sados
DROP TABLE 'nome_da_tabela'; //Usado para apagar tabelas.
Exemplo:
O valor inserido na tabela na mesma ordem que definida os campos, ou seja, o campo1
receber o valor1, o campo2 o valor2 e assim sucessivamente.
Exemplo:
SELECT
Permite recuperar informaes existentes nas tabelas. Sintaxe:
Exemplo:
Abaixo temos a exibio somente dos campos especificados aps o SELECT. Caso queira
visualizar todos os dados utilize asteriscos(*) conforme a segunda figura.
ou
UPDATE
Usado para atualizao dos dados, que altera os valores dos campos em uma tabela especificada com base
em critrios especficos. Sintaxe:
UPDATE nome_da_tabela
SET campo1 = 'novo_valor',campo2 = 'novo_valor',...,...
WHERE critrio;
Exemplo:
Imagine mais de 1000 registros
e voc precise alterar somente 1,
nesse caso usamos o critrio
sendo definido com o id.
ou seja, a alterao feita aonde o id = 1, em nosso exemplo.
DELETE
Remove registros de uma ou mais tabelas listadas na clusula FROM que satisfaz a clusula
WHERE. Sintaxe:
DELETE FROM nome_da_tabela WHERE critrio;
Exemplo:
Foi deletado a informao do id 3;
Obs.: muito cuidado quando usar o comando DELETE. Caso o critrio saia errado por um
erro do programador, poder ser deletado todos os dados da tabela.
COMANDOS ADICIONAIS
Vimos at agora alguns comandos principais, ainda existem outros comando que adicionado nos
comando SELECT,UPDATE, DELETE forma uma conjunto de manipulaes.
Comandos Descrio
DISTINCT Elimina linhas duplicadas na sada.
AS um alis para o nome da coluna.
FROM Lista as tabelas na entrada.
WHERE Critrios da seleo.
ORDER BY Critrio de ordenao das tabelas de sada. ASC ordem ascendente, DESC ordem
descendente.
COUNT(*) Usado no SELECT, conta quantos registros existem na tabela.
AND Usado para dar continuidade a mais de um critrio.
PRIMARY KEY Chave primaria definida na criao da tabela, evitando duplicidade de dados em um
mesmo campo.
FOREIGN KEY Chave estrangeira definida na criao da tabela, usada para fazer ligaes entre tabelas
de um banco de dados relacional.
Dica: Para mais detalhes consulte materiais disponveis na internet, livros, tutoriais,
vdeo aulas e outras apostilas de MYSQL ou SQL.
Informaes do
servidor
Aps o login visualizaremos a seguinte tela:
menu
Lista de banco de
Painel de criao de dados
banco de dados
Acima temos a figura da pgina inicial do phpMyAdmin. No frame do lado esquerdo est a lista de
todos os bancos de dados que existem no servidor. Clicando nesses bancos possvel navegar
atravs das tabelas do banco escolhido e chegar at os campos desta tabela. Na pgina inicial do
phpMyAdmin, mostrada acima, ainda possvel ver documentao e existe um box para criao de
um novo banco de dados.
Todas as funcionalidades que utilizamos no Konsole (Terminal), anteriormente pode ser feito de
forma mais simples e prtica usando a interface grficas do PhpMyAdmin.
Aps criarmos o banco de dados podemos observ-lo na lista de bancos ao lado esquerdo. Clique
no banco que acabamos de criar.
Aps clicarmos podemos criar as tabelas com a opo abaixo:
Aps executarmos a tabela, visualizaremos uma serie de informaes detalhadas dos campos da
tabela criada. Definimos ento, os tipos de dados que a tabela vai suportar e seus respectivos
tamanhos.
Em ndice, definimos o id como chave primria, onde os valores no podem ser duplicados, e
tambm auto incremento, onde tem a finalidade de incrementar valores automaticamente sem
precisar inseri-los de forma manual. Nulo significa que ao inserirmos um valor, os demais campos
no tem a obrigao de serem preenchidos, com isso seu valor pode ficar null(nulo). Os demais
itens do campo podem ser deixados do jeito que esto agora s clicar em Salvar.
Professor Renato Almansa da Silva Curso Tcnico em Informtica
PHP e MySQL 130
Tela de comandos:
Aps criarmos a tabela podemos inserir valores em seus campo, para isso entre no banco de dados
criado e escolha a tabela conforme a figura abaixo:
Apaga o registro.
7)Pesquise sobre banco de dados relacional e diga porque o MYSQL considerado um bando
de dados relacional.
8)Pesquise e defina o que chave primeira e chave estrangeira em banco de dados relacionais.
mysql_pconnect
mysql_pconnect('endereo_do_servidor_mysql':'porta','login','senha');
Ambas as conexes retornam um id que ser usado posteriormente. Tambm podemos colocar
essas funcionalidades dentro de um IF para tratarmos a conexo. Veja o exemplo abaixo:
Utilizamos o @ ignorar o
erro da conexo, porm
caso tenha algum erro ser
tratado de acordo a
programao do
IF.
O endereo do nosso servidor localhost ou o ip 127.0.0.1, mas h casos que o servidor externo e
preciso utilizar o ip ou domnio com a porta, isso vai depender se o servio de banco de dados est
na mesma maquina ou no. Vale ressaltar que o login e a senha so as mesmas utilizada na
instalao do MYSQL, e caso ocorra algum erro o cdigo acima, entrar no else e
exibir a mensagem Erro ao conectar!.
Depois de estabelecida a conexo, preciso selecionar a base de dados a ser utilizada, atravs do
comando mysql_select_db, que segue a seguinte sintaxe:
mysql_select_db('nome_do_banco' , 'id_conexo');
Passamos no exemplo o nome do banco que criamos no captulo anterior, caso no exista
crie o banco conforme foi mostrado no capitulo 9.2.2 ou 9.3.1 .
mysql_query
Esse comando utilizado quando queremos enviar uma query para o banco de dados ativo no
servidor da conexo informada pela conexo. Sintaxe:
mysql_query('comando_SQL','id_conexo');
Podemos utilizar comando SQL dentro dessa funo para manipularmos informao. Veja o
Exemplo:
Resultado em Konsole:
Podemos observar que qualquer comando SQL pode ser executado de
Tabela criada. forma direta na funo mysql_query como se fosse no Konsole, com a
exceo de comandos que retorne resultados como o SELECT,
DESCRIBE (DESC), dentre outros. Essa funo retorna somente o Id da
query, e no a string com valores do banco.
mysql_result
Este comando deve ser utilizado apenas para resultados seletivos onde podemos determinar de qual
linha e coluna da tabela queremos obter o valor. Podemos determinar somente a linha, porm a
coluna tem que ser determinada no comando SQL. Sintaxe:
mysql_result('comando_SQL','numero_da_linha','numero_da_coluna');
Exemplo:
Comando SQL.
Select retorna todos (*)
Resultado do resultados da tabela
dados_pessoais
mysql_query().
Linha 0 Coluna 4
poderamos ter definido somente a linha da seguinte forma:
Observe que o resultado imprime
a linha 0 (primeira linha) da coluna
cidade(coluna 4).
Nota: A string da query no deve terminar com ponto e virgula(;).
mysql_fetch_array
Esse comando retorna um array de valores contido no bando de dados, muito usado quando
queremos percorrer um conjunto de valores retornado pela query. Dessa forma, possvel obtermos
todas as linhas da tabela especificada, onde cada linha gravada em uma posio do array. Sintaxe:
mysql_fetch_array('id_resultado_query');
Obs.: Caso o banco de dados no exista, leia o tpico: Manipulando banco de dados em PHP.
2 Aps isso, insira alguns valores na tabela. No caso alguns nomes e telefones. Exemplo:
Agora podemos trabalhar com cdigos PHP para fazer a consulta de todos os valores e ordenar em
uma tabela HTML.
3 Criamos ento uma conexo e selecionamos o database(banco de dados).
Comando SQL.
Para melhor compreenso observe o link de forma detalhada conforme abaixo. Deletar:
Envia para o arquivo evento a varivel do tipo GET com o id obtido no loop, ou seja, cada linha
possui um link para excluir, ele envia a varivel deletar = numero do id obtido.
O link editar muito parecido com o deletar, porm as informaes so mandadas para o arquivo
editar juntamente com uma varivel GET chamada editar, que recebe tambm o id referente a linha
que foi montada.
Depois temos que criar um formulrio parecido ao de cadastro, mudando os valores do action, e
adicionando tag's PHP para preencher os valores de cada referencia, embaixo adicionamos um link
para voltar ao inicio:
Observe que o action do formulrio envia as informaes para o arquivo evento.php com uma
varivel GET editar= id_passado pela consulta, dessa forma podemos fazer todos os tratamento
no arquivo responsvel pelo evento.
4 E por ultimo criaremos um arquivo responsvel por todas as aes do aplicativo. Todo cdigo
abaixo pertence ao arquivo evento.php:
O primeiro passo incluirmos a conexo:
Cada evento diferenciado pelo IF atravs do comando isset, que verifica se determinada varivel
existe ou no. Dessa forma, todas as requisies passada para o arquivo evento.php so
diferenciadas.
Cdigo responsvel por editar (UPDATE) valores no banco de dados.
Outro detalhe a forma de concatenao da string passada para a varivel $sql, pois valores que no
so numricos tem que ser gravados em ' aspas simples, usamos a aspas dupla para separar
os blocos string ex: bloco_string ' .$variavel. ' bloco_string. Veja que a $variavel esta dentro
das aspas simples: ' . ' .
Cdigo responsvel por deletar(DELETE) valores no banco de dados.
2)Escreva uma sequencia de comandos PHP que possa ter a seguinte finalidade:
1- Conectar como o servidor localhost, onde o login usurios e a senha 1526.
2- Selecionar a base de dados chamada dados_site.
3- Executar um comando SQL para visualizar todos os dados. Dica: crie uma string com o
comando SQL, aps passe a varivel como parmetro para a funo mysql_query().
4- Imprimir todo o contedo do banco com o comando print_r.