Beruflich Dokumente
Kultur Dokumente
Captulo 1. Introduo a Lgica de Programao...................................................................9 1.1. Noes de Lgica.........................................................................................................9 1.2. O que lgica.............................................................................................................9 1.3. A real lgica do dia a dia.............................................................................................9 1.4. Lgica de programao.............................................................................................10 1.5. O que um algoritmo...............................................................................................11 1.6. Porque importante construir um algoritmo............................................................11 1.7. As maneiras de representarmos um algoritmo. ........................................................12 1.7.1. Descrio Narrativa. ........................................................................................12 1.7.2. Fluxograma Convencional.................................................................................12 1.7.3. Portugus Estruturado ou Pseudocdigo............................................................14 1.8. EXERCCIOS PROPOSTOS ......................................................................................15 Captulo 2. Tpicos Preliminares..........................................................................................16 2.1. Tipos primitivos.........................................................................................................16 2.1.1. Tipos de Primitivos de Dados...........................................................................16 2.2. Constantes.................................................................................................................16 2.3. Varivel......................................................................................................................17 2.4. Formao de identificadores.....................................................................................17 2.5. Declarao de variveis.............................................................................................17 2.6. Comandos de entrada e sada...................................................................................18 2.6.1. COMANDO DE ENTRADAS DE DADOS.............................................................18 2.6.2. COMANDO DE SAIDAS DE DADOS...................................................................19 2.7. Expresses aritmticas..............................................................................................20 2.8. Operadores aritmticos.............................................................................................21 2.9. Expresses lgicas.....................................................................................................22 2.10. Operadores relacionais............................................................................................22 2.11. Operadores lgicos..................................................................................................23 2.12. Comando de atribuio...........................................................................................24 2.12.1. PRIORIDADE DE OPERADORES:.....................................................................24 2.13. EXERCCIOS PROPOSTOS ....................................................................................25 Captulo 3. Estruturas de Controle.......................................................................................26 3.1. Estrutura sequencial..................................................................................................26 3.2. Estrutura de seleo..................................................................................................27 3.2.1. Seleo Simples.................................................................................................27 3.2.2. Seleo Composta..............................................................................................29 3.2.3. Seleo encadeada.............................................................................................30 3.3. Seleo de mltipla escolha......................................................................................32 3.4. Estruturas de repetio.............................................................................................33 3.5. Repetio com teste no incio e no final....................................................................34 3.5.1. TESTE INCIO....................................................................................................34 3.5.2. TESTE FINAL.....................................................................................................35 3.6. Repetio com varivel de controle...........................................................................37 3.7. Comparao entre estruturas de repetio. ............................................................39 3.8. EXERCCIOS PROPOSTOS ......................................................................................41 Captulo 4. Estruturas de Dados...........................................................................................42 4.1. O que estruturas de dados......................................................................................42 4.2. Variveis compostas homogneas..............................................................................42
4.3. Variveis compostas unidimensionais........................................................................43 4.4. Declarao e manipulao(unidimensional).............................................................44 4.4.1. Leitura de Dados de Uma Matriz do Tipo Vetor.................................................44 4.5. Variveis compostas multidimensionais....................................................................45 4.6. Declarao e manipulao(multidimensionais ).......................................................46 4.7. Variveis compostas heterogneas............................................................................46 4.8. Registros (declarao e manipulao).......................................................................47 4.9. Registros de conjuntos (declarao e manipulao). .............................................48 4.10. EXERCCIOS PROPOSTOS ....................................................................................49 4.11. Referencias:.............................................................................................................50 Captulo 5. Introduo a PHP...............................................................................................53 5.1. O que PHP..............................................................................................................53 5.1.1. Um pouco da Histria do PHP ............................................................................54 5.2. Instalao do Servidor PHP.......................................................................................54 5.2.1. Instalao Apache..............................................................................................55 5.2.2. Instalao Php5..................................................................................................56 5.2.3. Instalao MYSQL..............................................................................................57 5.2.4. Instalao phpMyAdmin....................................................................................57 5.3. Caractersticas de um programa PHP .........................................................................58 5.3.1. COMANDOS DE SADA(OUTPUT).....................................................................59 5.4. EXERCCIOS PROPOSTOS ......................................................................................60 Captulo 6. Atribuies em PHP............................................................................................61 6.1. Variveis....................................................................................................................61 6.2. Tipos de Variveis......................................................................................................63 6.2.1. Tipo booleano....................................................................................................63 6.2.2. Tipo inteiro........................................................................................................63 6.2.3. Tipo ponto flutuante:.........................................................................................64 6.2.4. Tipo numrico....................................................................................................64 6.2.5. Tipo String.........................................................................................................64 6.2.6. Tipo array..........................................................................................................65 6.2.7. Tipo objeto.........................................................................................................65 6.2.8. Tipo recurso.......................................................................................................65 6.2.9. Tipo null.............................................................................................................65 6.3. Constantes.................................................................................................................65 6.3.1. Constantes pr-definidas....................................................................................65 6.3.2. Definindo constantes.........................................................................................65 6.4. Converso de varivel...............................................................................................66 6.5. EXERCCIOS PROPOSTOS ......................................................................................67 Captulo 7. Operadores.........................................................................................................68 7.1. Operadores de strings...............................................................................................68 7.2. Operadores de atribuio..........................................................................................68 7.3. Operadores de decremento e incremento.................................................................70 7.4. Operadores aritmticos.............................................................................................71 7.5. Operadores relacionais .............................................................................................71 7.6. Operadores lgicos ou booleanos..............................................................................72 7.7. Precedncia de Operadores.......................................................................................73 7.8. EXERCCIOS PROPOSTOS ......................................................................................76 Captulo 8. Estruturas de Controle e Repetio....................................................................77 8.1. Blocos de controle.....................................................................................................77 8.2. IF e ELSE...................................................................................................................77
8.3. Atribuio condicional (ternrio)..............................................................................79 8.4. SWITCH....................................................................................................................79 8.4.1. SWITCH com BREAK.........................................................................................80 8.5. WHILE.......................................................................................................................81 8.6. DO...WHILE...............................................................................................................82 8.7. FOR...........................................................................................................................83 8.8. FOREACH..................................................................................................................84 8.9. BREAK.......................................................................................................................85 8.10. CONTINUE..............................................................................................................86 8.11. EXERCCIOS PROPOSTOS ....................................................................................88 Captulo 9. Manipulao de Arrays......................................................................................88 9.1. Criando um Array......................................................................................................88 9.2. Arrays Associativos....................................................................................................89 9.3. Interaes..................................................................................................................90 9.4. Acessando um Array..................................................................................................91 9.5. Alterando um Array...................................................................................................91 9.6. Arrays multidimensionais..........................................................................................92 9.7. Funes com Arrays..................................................................................................94 9.8. EXERCCIOS PROPOSTOS ......................................................................................98 Captulo 10. Manipulaes de Funes................................................................................99 10.1. Declarando uma Funo.........................................................................................99 10.2. Escopo de Variveis em Funes...........................................................................100 10.3. Passagem de Parmetro.........................................................................................101 10.4. Valor de Retorno....................................................................................................102 10.5. Recurso................................................................................................................102 10.6. EXERCCIOS PROPOSTOS ..................................................................................103 Captulo 11. Manipulao de arquivos e diretrios............................................................104 11.1. Criando e Abrindo um Arquivo.............................................................................104 11.2. Gravando em um arquivo......................................................................................105 11.3. Fechando um arquivo............................................................................................106 11.4. Lendo um arquivo.................................................................................................106 11.5. Copiando,Renomeando e Apagando um Arquivo..................................................107 11.6. Manipulando Diretrio..........................................................................................108 11.7. EXERCCIOS PROPOSTOS ..................................................................................109 Captulo 12. Interaes PHP com HTML............................................................................110 12.1. Formulrios ..........................................................................................................110 Elementos de um formulrio......................................................................................110 12.2. Exemplo de formulrio..........................................................................................112 12.3. Mtodo Post e Get.................................................................................................114 12.3.1. Mtodo Get....................................................................................................114 Recebendo dados via mtodo GET.............................................................................115 12.3.2. Mtodo Post...................................................................................................116 12.4. Interaes com o Browser.....................................................................................117 12.5. Cookies..................................................................................................................118 Acessando um cookie:................................................................................................120 12.6. Sesso....................................................................................................................120 12.7. Requisio de Arquivos.........................................................................................122 12.8. Tratamentos de erro..............................................................................................123 12.9. EXERCCIOS PROPOSTOS ..................................................................................124 Captulo 13. Introduo ao MySQL....................................................................................125
13.1. O que o MYSQL?................................................................................................125 13.2. Trabalhando com MYSQL......................................................................................125 13.2.1. Estruturas de Dados.......................................................................................126 13.2.2. Criando Banco e Tabelas................................................................................127 13.2.3. Manipulando dados das tabelas.....................................................................128 13.3. Trabalhando com PhpMyAdmin............................................................................130 13.3.1. Manipulando banco de dados no PhpMyadmin.............................................131 13.4. EXERCCIOS PROPOSTOS ..................................................................................134 Captulo 14. PHP com Banco de dados MYSQL..................................................................135 14.1. Criando e Selecionando a Conexo.......................................................................135 14.2. Manipulando Dados do Database..........................................................................136 mysql_query...............................................................................................................136 mysql_result...............................................................................................................136 mysql_fetch_array......................................................................................................137 14.3. Criao de CRUD...................................................................................................138 14.4. EXERCCIOS PROPOSTOS ..................................................................................141 Captulo 15. Histria do Joomla.........................................................................................144 15.1. Introduo.............................................................................................................144 15.2. Vantagens de utilizar o Joomla!............................................................................144 15.3. O Joomla tem como principais caractersticas:.....................................................145 15.4. Ferramentas CMS Sistema de Gerenciamento de Contedo...............................145 Captulo 16. Instalao do Joomla.....................................................................................146 16.1. Iniciando os Servidores.........................................................................................147 16.1.1. Passos para instalao do Joomla..................................................................147 16.1.2. Copiando o Joomla para a Pasta HTDOCS.....................................................147 Captulo 17. Vamos a Instalao.........................................................................................148 17.1. 1 Passo - Idiomas.................................................................................................148 17.2. 2 Passo Pr-Instalao.......................................................................................149 17.3. 3 Passo - Licena..................................................................................................149 17.4. 4 Passo Banco de Dados....................................................................................150 17.5. 5 Passo Configurao do FTP............................................................................151 17.6. 6 Passo - Configurao.........................................................................................151 17.7. 7 Passo - Fim........................................................................................................152 Captulo 18. Frontend e Backend.......................................................................................153 18.1. Frontend rea de Usurios.................................................................................153 18.2. Backend rea de Administradores.....................................................................154 18.2.1. Login de Acesso.............................................................................................154 18.2.2. Nvel de usurio Papel ................................................................................155 18.2.3. Papis no Site principal (Frontend)...............................................................155 18.2.4. Papeis na rea de administrao (BackEnd).................................................155 Captulo 19. Conhecendo a rea de Administrao...........................................................155 19.1. Acessos..................................................................................................................155 19.2. Registrando os usurios........................................................................................156 19.3. Categorias de Usurios Registrados......................................................................156 19.4. Usurios Responsveis pelo Contedo..................................................................156 19.4.1. Usurio Registrado.........................................................................................156 19.4.2. Autor..............................................................................................................156 19.4.3. Editor.............................................................................................................156 19.4.4. Publicador (publisher)...................................................................................156 19.5. Usurios de Administrao....................................................................................157
19.5.1. Super Administrador......................................................................................157 19.5.2. Administrador................................................................................................157 19.5.3. Gerenciador (Manager).................................................................................157 Captulo 20. Gerenciando as Categorias e Sees..............................................................157 20.1. Como criar uma Seo..........................................................................................158 20.2. Como criar uma categoria.....................................................................................159 Captulo 21. Inserindo um Novo Texto...............................................................................159 21.1. Para inserir um texto, siga os seguintes passos:....................................................159 Captulo 22. Como criar um link no menu para um item de contedo..............................160 22.1. Criando um link para o item de contedo.............................................................160 22.2. Administrao dos menus.....................................................................................162 22.2.1. Tela de configurao de menus......................................................................162 22.3. Especificao de Alguns Itens de Menu.................................................................163 22.3.1. Contedo.......................................................................................................163 22.3.2. Miscellaneous................................................................................................163 22.3.3. Componentes .............................................................................................163 22.3.4. Links ...........................................................................................................163 Captulo 23. Administrao de Mdia.................................................................................163 23.1. Observando a imagem acima, teremos os seguintes tpicos:................................164 23.1.1. Primeiro tpico..............................................................................................164 23.1.2. Segundo tpico..............................................................................................164 23.1.3. Terceiro tpico...............................................................................................164 23.1.4. Quarto tpico.................................................................................................164 23.1.5. Quinto tpico.................................................................................................164 23.1.6. Sexto tpico...................................................................................................164 Captulo 24. Conhecendo alguns componentes..................................................................164 24.1. Componente Weblinks...........................................................................................164 24.2. Componente Contatos...........................................................................................165 24.3. Componente Banner..............................................................................................167 Captulo 25. Mdulos e Componentes................................................................................168 25.1. Criando um mdulo utilizando o prprio Joomla.................................................169 25.1.1. Veja os pontos necessrios para criao de um mdulo:................................169 25.2. Instalao de Mdulos..........................................................................................170 25.2.1. Passos para instalar um novo mdulo:...........................................................170 25.3. Componentes........................................................................................................170 Captulo 26. Estrutura........................................................................................................171 26.1. Designer................................................................................................................171 26.2. Programao.........................................................................................................171 26.3. Contedo MySQL..................................................................................................171 26.4. Posies de Mdulos.............................................................................................172 26.4.1. Vejamos exemplo no Cdigo PHP:.................................................................172 26.4.2. Vejamos agora o exemplo no Painel de Administra o (BackEnd)................172 26.5. Estendendo a Estrutura do Template (Tema)........................................................172 26.5.1. Voc pode usar os seguintes atributos para os mdulos:...............................172
Caro Aluno(a), Este Material foi criado com o objetivo de ser utilizado na aprendizagem da l gica 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 inicializa o da formao dos que querem seguir a carreira de programador.
Logica de Programao
Perceba que podemos detalhar mais coisas a respeito do exemplo anterior, nessa sequ ncia foi definida alguns fatos comuns. Quando queremos chegar a um objetivo final, temos que tra ar uma lgica coerente que tenha sentido, onde em uma sequncia lgica temos definido todos os passos que devemos seguir at o final.
Logica de Programao
10
necessrio que a mquina que ir realiz-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficincia, de modo a garantir a repetio do mesmo. 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 sequ ncia em que estas fases devem ser realizadas. A essa especificao da sequncia ordenada de passos que deve ser seguida para a realiza o 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 l gica 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.
Logica de Programao
11
Logica de Programao
12
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.
Logica de Programao
13
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. Observe as principais formas geomtrica usadas para representao de Fluxogramas de algoritmos: Incio ou fim do fluxograma Operao de entrada de dados
Operao de atribuio
Deciso
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 sa da (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).
Logica de Programao
14
Algoritmo uma palavra que indica o incio da definio de um algoritmo em forma de pseudocdigo. I - Nome do programa: um nome simblico dado ao algoritmo com a finalidade de distingui-los dos demais. II Var: consiste em uma poro opcional onde so declaradas as variveis globais usadas no algoritmo principal; III - Incio e Fim: so respectivamente as palavras que delimitam o incio e o trmino do conjunto de instrues do corpo do algoritmo. O algoritmo do clculo da mdia de um aluno, na forma de um pseudocdigo, fica da seguinte forma no visualg:
Dica: O Visual ser a ferramenta que utilizaremos no decorrer do aprendizado, lembrando que no usaremos todos os recursos disponveis diretamente na ferramenta, uma parte pratica com programao lgica dentro do Visualg, a outra mostra conceitos que so logicamente utilizados nas maiorias das linguagens de programa o, uma vez que, at ento, a verso do Visual no abrange praticar todo contedo contido nessa apostila como registos, manipulao de arquivo,dentre outros.
Logica de Programao
15
T = tempo em anos,ex: 2 anos I = Taxa de juros,ex: 5% o usurio entra com esses valores e sabe quanto e calculado em juros simples. a)quais as entradas de dados. b)qual o processo que est sendo executado. c)qual ser a sada de informao se o usurio digitar 1025, 3, 12. 5)Resolva as seguintes lgicas: I - Um time de futebol ganhou 8 jogos mais do que perdeu e empatou 3 jogos menos do que ganhou, em 31 partidas jogadas. Quantas partidas o time venceu? II - Uma pessoa supe que seu relgio est 5 minutos atrasado, mas, na verdade, ele est 10 minutos adiantado. Essa pessoa que chega para um encontro marcado, julgando estar 15 minutos atrasada em relao ao horrio combinado, chegou, na realidade, na hora certa em quantos minutos atrasados? III - Trs msicos, Joo, Antnio e Francisco, tocam harpa, violino e piano. Contudo, no se sabe quem toca o qu. Sabe-se que o Antnio no o pianista. Mas o pianista ensaia sozinho Tera. O Joo ensaia com o Violoncelista s Quintas . Quem toca o qu? IV Existem trs mulheres, Dona Rosa, Dona Branca, Dona Lilas, Dona branca diz: - as cores de vestido que estamos usando combinam com nossos nomes, mas no estamos usando a cor do prprio nome, a pessoa que est de lilas diz: - verdade, quis as cores que cada uma est usando? 6) Supondo que voc tenha planejado no seu dia posterior ir para o colgio, aps isso pagar uma conta no banco, aps isso ir trabalhar,crie um algoritmo o mais detalhado possvel que possa satisfazer todo o planejamento citado: 7)Faa um algoritmo para imprimir um documento. Descreva com detalhes. 8)Faa um algoritmo para colocar um quadro em uma parede. Descreva com detalhes.
Logica de Programao
16
2.1.1.
Quaisquer dados 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, 99-3000-2, 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 s o 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.
Logica de Programao
Nesse exem!lo temos o n(mero ) como constante* ou se+a* 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 as 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 :
Representamos nomes escolhidos para rotular as vari veis,procedimentos e funes, normalmente, obedecem as seguintes regras: 1. O primeiro carcter deve ser uma letra. 2. Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto : {a,b,c,..z,A,B,C,...Z,0,1,2,...,9,_}. 3. Os nomes escolhidos devem explicitar seu contedo. EX: A, B1, BC3D,SOMA, CONTADOR. obs.: Um exemplo de identificador invlido seria 2AB ou qualquer outro iniciado por um dgito.
Logica de Programao
1!
Portugol:
Padro Visualg:
Percebemos que existe duas diferena na declarao das variveis do portugol em relao a do Visual,que justamente a troca de posies e a ausncia de ponto-e-virgula. Exemplo: Visualg: alunos : caracter valor : inteiro b : real Portugol: caracter : alunos ; inteiro : valor ; real : b ;
Exemplo: leia (v) O valor da varivel (v) dado por um dispositivo de entrada.
Logica de Programao
19
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 virgula( ; ), mas para o uso no Visualg, no precisamos usar ; para fechar o 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:
Esse exemplo ao lado utilizamos os a subtrao de dois nmeros e logo aps imprimimos o resultado na tela.
Logica de Programao
20
utilizamos o escreval quando queremos uma quebra de linha, troque por escreva e perceba o que acontece:
((A//2)*B) 15
Logica de Programao
21
Para representa potencia e radiciao utilizamos: Operador ^ raizQ(x) Exemplo: cdigo-fonte. Sada da execuo. Funo Potenciao Radiciao Significado x elevado a y Raiz quadrada de x 2^8 raizQ(9) Exemplos
Usaremos outras operaes matemticas no convencional, porm muito teis nas construo de algoritmo, que so o resto e o quociente da diviso inteira, conforme abaixo: Operador mod div Funo Resto da diviso Quociente da diviso Exemplo 9 mod 4 resolta em 1 9 div 4 resulta em 2
Exemplo:
algortimo que possui as quatros operaes: cdigo-fonte. Sada da execuo.
cdigo-fonte.
Sada da execuo.
Logica de Programao
22
*bs.: utili+amos somente o ,-. no lugar de ,--. e ,'/. no lugar de ,0-. mas isso somente no 1isualg. Exemplos: compara2es: 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} Algortimo abaixo mostra o uso desse operadores relacionais cdigo()onte. 3a4da da e!ecuo.
Logica de Programao
23
Esses operadores tem a finalidade de novas proposies lgicas composta a partir de outra proposies lgicas simples. Observe: Operador no e ou Funo negao conjuno disjuno
Com isso podemos podemos construir a Tabela verdade onde trabalhamos com todas as possibilidades combinatria entre os valores de diversas variveis envolvidas, as quais se encontram em apenas duas situaes (V e F), e um conjunto de operadores lgicos. Veja o comportamento dessas variveis: Operao de Negao: A F V Operao de conjuno: A F F V V Operao de disjuno no-exclusiva: A F F V V Exemplos: ACHOU = falso , ACHOU = true; NUM = 9 ( 4 > 5 ) e ( 5 > 3) => falso e verdadeiro (1) = falso (0) no ACHOU => verdadeiro B F V F V A ou B F V V V B F V F V AeB F F F V (not) no A V F
Logica de Programao
24
Exemplo: c#igo,&onte.
-a.#a #a execuo.
5 '( #
6 '( %(!
: '( (;$((:+#6"&#"$!"
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. Operadores Lgicos
Projeto E-jovem - Mdulo II
Logica de Programao
25
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. 8)Crie um diagrama onde podemos representar o programa da questo 7. 9)Crie um programa que receba pelo usurio o nome,ano de nascimento, ano atual, e calcule a idade,mostrando a seguinte sada ex: meu nome Janana e tenho 23 anos de idade. 10)crie um diagrama para representao da questo 9. 11) usando o comando o tipo de dado logico do Visualg, teste os operadores relacionais. ex: a : logico , a 12 <=5 ,escreva(a).
Logica de Programao
26
Logica de Programao
O algoritmo proposto no exemplo anterior descritivo e respeita as regras de organizao e sintaxe do portugus estruturado. Porm, qual a primeira instruo a ser executada neste algoritmo? Ele ser executado de maneira sequencial, onde a partir da palavra reservada Declaraes as instrues vo sendo executadas de cima para baixo e a prxima instruo s executada aps a anterior ser encerrada. O ponto e vrgula marca exatamente o final da instruo a ser executada, no caso dos comando do Visualg vale lembrar que suas instrues no finalizam com ponto e virgula, pois ao passar pra prxima linha o programa reconhece como finalizao da instruo anterior. 1. Primeira execuo ser a criao da varivel NOTA. 2. Segunda ser a escrita da mensagem que orienta o usurio. 3. Na terceira ser armazenado o valor informado pelo usurio. 4. A quarta e ltima mostrar uma mensagem e o valor lido 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.
Logica de Programao
2! No Visualg:
Exemplo: !eclara"#es inteiro <=A=>; $nicio escreva(?<n)orme sua idade: ?"; leia(<=A=>"; se (<=A=> ' @%" ento escreva (?1ocA uma criana?"; )im se; %im
Este algoritmo ser executado sequencialmente at chegar ao comando SE (comando condicional SE) que realizar o teste condicional para verificar a veracidade do valor informado pelo usu rio e armazenado na varivel IDADE. Se ela for verdadeira, ou seja, for menor que 15 a mensagem "Voc uma criana" ser mostrada na tela. Se o valor informado pelo usurio no atender ao teste condicional, a mensagem no ser exibida e o bloco condicional no ser executado. Fluxograma: Abaixa temos no fluxograma o simbolo que representa uma deciso ou seleo e a seguinte: As suas vrtices indica qual a sada caso ela for verdadeira ou falsa.
em
Exerccio rpido: 1) Crie um algoritmo que leia um nmero e diga se ele maior ou menor que 10. 2) Crie um algoritmo que leia dois nmeros e determine qual o maior entre eles, imprimindo na tela (o primeiro nmero o maior, o segundo nmero e o maior ) de acordo com o valor digitado.
Logica de Programao
29
Exemplo: Declaraes inteiro idade; $nicio escreva(?<n)orme sua idade: ?"; leia(idade"; se (idade ' @%" ent&o escreva (?1ocA uma criana?"; sen&o escreva(?1ocA adulto?"; )im se; %im
no Visualg
Se a idade informada for menor que 15 ento a mensagem a classificar como uma criana, seno a mensagem apresentada ser que Voc adulto.
Logica de Programao
30
Exerccio rpido: 1) Crie um algoritmo que leia sua idade e diga se voc de maioridade ou de menoridade. 2) Crie um algoritmo que um nmero, caso ele seja menor que 0, transforme ele em positivo, se no, imprima seu valor na tela.
Logica de Programao
31 no Visualg:
Exemplo:
=eclara2es inteiro idade; <n4cio escreva(?<n)orme sua idade: ?"; leia(idade"; se (idade ' #C" ento se(idade ' @%" ento escreva (?1ocA criana?"; seno escreva (?1ocA adolescente?"; )im se; seno se(idade ' %C" ento escreva(?1ocA adulto?"; seno escreva(?1ocA velDo?"; )im se; )im se; Eim
Fluxograma:
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.
Projeto E-jovem - Mdulo II
Logica de Programao
32
caso @: escreva (?vero?"; G testes de igualdades sobre estao I caso #: escreva (?outono?"; caso 8: escreva (?inverno?"; caso ;: escreva (?primavera?"; caso contrario: escreva (?per4odo invJlido?"; )im escolDa; Eim
Logica de Programao
33
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.
Logica de Programao
34
Para o exemplo acima foi desenvolvido um algoritmo que atende ao problema apresentado, mas se os valores tivessem que ser gerados at 1000? .Assim o algoritmo no ficaria mais complexo, pois a operao a ser realizada seria a mesma, e ele ficaria bem maior. Adiante veremos a solu o para esse problema. Dica: os laos de repetio so conhecidos em ingls como loops ou looping.
Logica de Programao
35
Fluxograma: Observe ao lado a representao genrica em um algoritmo grfico usando o ENQUANTO ...FAA.
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.
Para o teste final temos a instruo REPITA ... AT, onde possui caractersticas relevantes na
As principais caractersticas dessa instruo so:
O teste condicional para realizar a repetio sobre o bloco de instrues existente entre a palavra reservada REPITA e AT executado somente no final do bloco, conforme organizao sequencial do algoritmo O bloco entre as duas palavras reservadas desta instru o ser executado no mnimo uma vez A repetio executada somente se o teste condicional for falso, pois sendo ele verdadeiro a repetio encerrada.
Logica de Programao
36 )o Visualg:
Exemplo (descritivo": =eclara2es real nota media; inteiro au!; <n4cio au! K @; media K C; repita escreva(?<n)orme sua nota: ?"; leia(nota"; media K media + nota; au! K au! + @; at (au! / %C"; escreva(?Ldia da turma - ? media &%C"; Eim
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. Observe Fluxograma ao lado:
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.
Logica de Programao
No Visualg:
Logica de Programao
3!
Vamos acompanhar outro exemplo na aplicao desta instruo de repetio. Exemplo (descritivo): =eclara2es real nota soma media; inteiro au!; <n4cio soma '( C; para au! de @ at %C passo @ )aa escreva(?<n)orme sua nota: ?"; leia(nota"; soma'( soma + nota; )im para; media '( soma & %C; escreva (?Ldia da turma - ? L>=<A"; Eim 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. No Visualg:
nmeros e imprima somente os 5 primeiros. 2) Faa um algoritmo que imprima somente nmeros pares de 2 at 20.
Logica de Programao
39
Uma varivel auxiliar contar de quantas vezes ser executado o conjunto de comandos (bloco de repetio), sem interferncia direta do usurio. O bloco ser repetido sempre a quantidade de vez prevista pelo desenvolvedor do programa.
CONTROLADO PELO USURIO: O programa sempre respeitar a solicitao do usurio,
AUTOMTICO:
executando um bloco de repetio quantas vezes forem solicitadas pelo usurio, respeitando a lgica existente no programa desenvolvido. Na tabela a seguir podemos ver um comparativo de estruturas de repetio; Estrutura >nFuanto Nepita Oara Onde: v varivel de controle; vi a varivel de controle; vf o valor final da varivel v; p o valor o incremento dado varivel; Diagrama: enquanto: +ondi"&o <n4cio Einal Po tem ,uantidade de execu"#es C ou muitas Linimo @ ((v)(vi" div p"+@ +ondi"&o de exist-ncia Mondio verdadeira Mondio )alsa v'-v)
repita:
para:
Logica de Programao
40
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: enFuanto au! ' %C )aca Q....... )im enFuanto re!ita repita Q...... at 1au! 8 9:5$ !ara para au! de @ at %C passo @ )aa Q..... &im !ara$ veja um exemplo de um programa feito com as trs estruturas:
repare que a varivel aux iniciada varias vezes pois a cada la o de repetio incrementado um novo valor, no cado de 1 at o numero 10.
Logica de Programao
41
Logica de Programao
42
Lembrando que estas regras podem mudar de acordo com a linguagem. Veja a forma estruturada utilizada no Visualg. Declarao:
Inicializao:
Logica de Programao
43
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.
Logica de Programao
44
Oadro 1isualg: [nome da varivel] : vetor[.valor do ndice/] de [ tipo de varivel] Observe: Declarao convencional 4 Declarao no ;isualg4 n o tamanho do vetor. Exemplo: real: media[40]; inteiro: valor[100]; alunos : vetor[0..50] de caracter dias : vetor[0..31] de inteiros tipo: nomeRnS; nome : identi'icadorRnS#e tipo
Logica de Programao
45
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, s o 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 atrav s 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:
Logica de Programao
46
onde: Li 6 re!resenta o limite inicial #o vetor. Lf 6 re!resenta o limite &inal #o vetor. V 6 vetor. Vn 6 n(meros #e vetores. Tipo primitivo: re!resenta qualquer uns #os ti!os "'sicos #e #a#os. Dica: Cada vetor separado por virgula, com isso formamos uma matriz.
Logica de Programao
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 identifica o 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 informa es 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).
Logica de Programao
4!
Diagrama:
Dica: No existe registro no Visualg, portanto para programa o do mesmo usa-se outras linguagens que sero visto nos mdulos mais adiante.
Onde: IDENTIFICADOR: representa o nome associado ao tipo registro constru do; 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 vari veis : 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 ent o definir primeiro o tipo construdo registro e depois o vetor. Exemplo: tipo N>VOA33AV>L - registro inteiro : numero poltrona; caractere: origem destino data DorJrio; real: distWncia; 'imregistro; N>VOA33AV>L : OA33AV>L;
Logica de Programao
49
O exemplo corresponde definio de um modelo REGPASSAGEM de um registro e criao de uma rea de memria chamada PASSAGEM, capaz de conter sete subdivises. 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 separa o entre o nome do registro e o nome do campo. Podemos aplicar uma leitura ou uma escrita direta no registro:
leia(PASSAGEM); escreva(PASSAGEM);
Exemplo utilizando o registro PASSAGEM:
incio
Gde)ini2es anterioresI . . leia0OA33AV>L.numero1; leia0OA33AV>L.origem1; . escreva0OA33AV>L1; )im
Logica de Programao
50
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.
4.11. Referencias: <ttp:==>>> brasilescola com='iloso'ia=o?@ue?logica <tm <ttp:==>>> ucb br=programar=algoritmo= >>> apostilando com 3ogica de Programa"&o0A contru"&o de Algoritmos e estrutura de dados1 9A edi"&o Autores: Andr* 3ui7 Villar %orbellone e Benri %rederico Eberspac<er
Caro Aluno(a), Este material tem como objetivo abordar o uso da tecnologia de programa o 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.
P"P e M#$%L
53
PHP uma linguagem de criao de scripts embutida em HTML no servidor. Os produtos patenteados nesse nicho do mercado so as Active Server Pages(ASP) da Microsoft, o Coldfusion da Allaire e as Java Server Pages da antiga Sun que foi comprada pela Oracle. PHP s vezes chamado de o ASP de cdigo-fonte aberto porque sua funcionabilidade to semelhante ao produto/conceito, ou o que quer que seja, da Microsoft. Exploraremos a criao de script no servidor, mais profundamente, nos prximos captulos, mas, no momento, voc pode pensar no PHP como uma coleo de supertags de HTML que permitem adicionar funes do servidor s suas pginas da Web. Por exemplo, voc pode utilizar PHP para montar instantaneamente uma complexa pgina da Web ou desencadear um programa que automaticamente execute o dbito no carto de crdito quando um cliente realizar uma compra. Observe uma representao de como PHP e HTML se comportam:
P"P e M#$%L
54
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 v rias verses do UNIX e do Windows. Todos os projetos da Apache Software Foundation incluindo o PHP s o software de cdigo-fonte aberto.
P"P e M#$%L
55
voltado para Linux Educacional e por se tratar de uma instala o mais complicada, e tambm a ferramenta phpMyAdmin usada para administrar banco de dados MYSQL.
#apt-get update
Apartir de agora podemos instalar o apache:
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 p gina 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 informa es consulte a documentao do site oficial do apache: http://httpd.apache.org/docs/2.2/
P"P e M#$%L
56
Aps a concluso da instalao, podemos testar criando um arquivo dentro da pasta var/www.
Entre na pasta principal: cd /var/www Renomeie o arquivo index.html para outro nome: #mv index.html nome.html Qualquer arquivo com o nome index dentro da pasta www ser o primeiro arquivo a ser executado. Lembrando que pode existir somente um arquivo index na pasta. Ap s renomear criaremos um novo arquivo. #kate index.php Aps executar esse comando, digite o seguinte cdigo no editor de texto kate:
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:
P"P e M#$%L
P"P e M#$%L
5!
ou
Ambos delimitadores so vlidos, porm para o funcionamento do segundo delimitado necessrio a ativao dessa opo no apache. Dica: Em alguns servidores apache a ativao do short_open_tag necessria, passando o seu valo de 0 (desativado) para 1 (ativado), por m por padro o seu valor 1, o mesmo encontrado no arquivo php.ini . 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 c digo, 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 cdigos-fonte ou est ligado diretamente a programao desse cdigo. Podemos tambm comentar muitas linhas, isso serve quando queremos que boa parte do
Projeto E-jovem - Mdulo II
P"P e M#$%L
59
cdigo no execute ou simplesmente colocar um comentrio mais extenso, observe o exemplo abaixo:
ou
P"P e M#$%L
60
P"P e M#$%L
61
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 simult neos 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 identifica o, 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.
Alg mas !icas Importantes: Nomes de variveis devem ser significativa e transmitir a ideia de seu contedo dentro do contexto no qual est inserido.
Utilize preferencialmente palavras em minsculo (separadas pelo caracter _) ou somente as primeiras letras em maisculo quando da ocorrncia de mais palavras. Nunca inicie a nomenclatura de variveis com nmeros. Ex: $1nota;
Projeto E-jovem - Mdulo II
P"P e M#$%L
62
Nunca utilize espao em branco no meio do identificados da varivel. Ex: $nome um; Nunca utilize caracteres especiais( ! @ # ^ & * / | [ ] { } ) na nomenclatura das vari veis. Evite criar variveis com mas de 15 caracteres em virtude da clareza do cdigo-fonte.
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 cdigo-fonte 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 conte do 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 altera o em qualquer uma das variveis reflete na outra,veja:
P"P e M#$%L
63
No exemplo anterior percebemos que tanto $a como $b apontam para a mesma refer ncia 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.
Resultado = 1 (esse valor representa verdadeiro ou true). Tambm podemos atribuir outros valores booleanos para representa o de valores falso em operao booleanas.
Inteiro 0 ; Ponto flutuante 0.0 ; Uma String vazia ou 0 ; Um array vazio ; Um objeto sem elementos ; Tipo NULL .
P"P e M#$%L
64
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.
Sintaxe Significado
\n \r \t \\ \$ \ \ Observe o exemplo: Nova linha Retorno de carro (semelhante a \n) Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa simples Aspa dupla
P"P e M#$%L
65
P"P e M#$%L
66
O nome de uma constante tem as mesmas regras de qualquer identificador no PHP . Um nome de constante vlida comea com uma letra ou sublinhado, seguido por qualquer nmero de letras, nmeros ou sublinhados. Voc pode definir uma constante utilizando-se da funo define(). Quando uma constante definida, ela no pode ser mais modificada ou anulada. Estas so as diferenas entre constantes e variveis:
Constantes podem ser definidas e acessadas de qualquer lugar sem que as regras de escopo de variveis sejam aplicadas; Constantes s podem conter valores escalares. Constantes no podem ter um sinal de cifro ($) antes delas; Constantes s podem ser definidas utilizando a funo define( ), e no por simples assimilao; Constantes no podem ser redefinidas ou eliminadas depois que elas so criadas;
Resultado: 542 O resultado poderia ser 542.0, mas lembrando que o interpretador do PHP faz outra convers o 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) 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. 10) Qual a principal finalidade de um constante e como elas so definidas em PHP . 11) Em que momentos precisamos converter uma varivel de um tipo em outro. 12) Quais os typecasting usados em PHP . 14) crie uma constante com o comando define e imprima com o comando print(); 13) Crie converses e imprima na tela com o comando print() com as seguintes varivel. $var1 = paraleleppedo, $var2 = 15.20, $var3 = 10. a) converta a varivel $var1 em objeto. b) converta a varivel $var3 em ponto flutuante. c) converta a varivel $var2 em inteiro.
Projeto E-jovem - Mdulo II
P"P e M#$%L
6!
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.
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.
Projeto E-jovem - Mdulo II
69
Resultado: a = 8,b = Bom Dia! Observe a expresso: $a = 3 e logo aps $a+=5. Isto significa a mesma coisa de $a = $a + 5, ou, $a = 3 +5. A ideia pode ser usada para string, como foi feito com a vari vel $b, onde $b = Bom, logo aps usamos ponto(.) e igual(=) para concatenar os valores, ficando assim: $b.=Dia!. Lembrando que isso significa a mesma coisa que $b = $b.Dia. Observe mais um exemplo:
Resultado: Bom Dia turma 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 atribui o: Operadores = += -= *= /= %= .= Exemplo: Descrio Atribuio simples. Soma, depois atribui. Subtrai, depois atribui. Multiplica, depois atribui. Divide, depois atribui. Modulo(resto) da diviso, depois atribui. Concatena, depois atribui.
Resultado: 24 8 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> c digo usado em HTML para quebra de linha.
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 Pr-incremento ou incremento-prefixado com operaes que j conhecemos, observe: Operador ++$a - -$a Forma extensa. $a = $a + 1 $a = $a - 1 Forma simplificada $a+=1 $a -=1
P"P e M#$%L
Veja um exemplo prtico: $a <= $b Compara se $a menor ou igual a $b, onde, retorna verdadeiro (TRUE), caso contr rio retorna falso(FALSE). Para testarmos essas comparaes podemos utilizar o condicional ?: (ou ternrio), sua sintaxe a seguinte:
Projeto E-jovem - Mdulo II
P"P e M#$%L (expresso booleana) ? (executa caso verdadeiro) : (executa caso falso); Agora podemos ver um exemplo envolvendo as sintaxes e empregabilidade dos comparadores:
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. No prximo exemplo usamos os operadores lgicos que tem procedncia maior:
P"P e M#$%L
Tambm podemos atribuir valores as variveis usando os operadores lgicos: O primeiro echo mostra 2 e 0, pois no atribui valor a $b uma vez que a primeira condio j satisfatria. O segundo echo mostra 5 e 3, pois tanto a primeira quanto a segunda precisam ser executadas.
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,
P"P e M#$%L
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 subtra o 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 - ! ++ -*/% +-. > < >= <= == != <> && || AND XOR OR 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 E com menor prioridade Ou exclusivo Ou com menor prioridade
= += -= *= /= %= Operadores de atribuio
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:
Seguindo a ordem de procedncia temos: (5) * (6) / (16 - ((7)*2)) >>> 5 * 6 / (16 - (14)) >>> 5 * 6 / 2 >>> 30 / 2 Resultado : 15 Observe que primeiro executa todos os parnteses, e s ento temos as procedncia das demais operaes.
Projeto E-jovem - Mdulo II
P"P e M#$%L
9)Observe o cdigo abaixo e diga quais das operaes so executadas primeiro, coloque a resposta em ordem decrescente.
$a = &'5()+*+2+1,-5+2+1;
10)Faa testes com os operadores relacionais substituindo o operados > do cdigo-fonte abaixo.
<?php $var1 = 2.25.*; $var2 = 2.2.)5; print $var1 > ?>
12) Observe o cdigo-fonte abaixo e diga qual o resultado booleano final. Justifique sua resposta.
<? $a = 12.0 < 11.2; $b = 10'2() > 1,-)+10; $c = 10; print $a 33 $c = 10 44 $b% ? 5tr1e5 " 5#al$e5%; ?>
P"P e M#$%L
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:
8 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: i# ele$ e6pre$$/o% coman!o; coman!o; i# e6pre$$/o%7 coman!o1; coman!o2; coman!o); 8 el$e 7 coman!o1; coman!o2; coman!o); 8 Exemplo:
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: i# e6pre$$ao1% coman!o1; el$e e6pre$$ao2% coman!o2; i# el$e coman!o*; Exerccio rpido:
@X" Eaa uma script em OYO Fue possua ; notas de um aluno(cada uma em uma variJvel". =epois calcule Projeto E-jovem - Mdulo II
Exemplo:
i# el$e
e6pre$$ao)% coman!o);
P"P e M#$%L
e imprima a mdia aritmtica das notas e a mensagem de aprovado para mdia superior ou igual a Z.C ou a mensagem de reprovado para mdia in)erior a Z.C. #X"Eaa uma script em OYO Fue receba a idade de um nadador(representada por uma variJvel cDamada ,[idade." e imprima a sua categoria seguindo as regras: +ategoria <n)antil A <n)antil B ]uvenil A ]uvenil B 3Anior $dade % ( Z anos \ ( @C anos @@( @8 anos @;( @Z anos maiores de @\ anos
uma estrutura parecida com IF e ELSE, onde dependendo da expresso booleana podemos executar um bloco ou no. Exerccio rpido:
@X" Eaa uma script em OYO Fue receba um nHmero representado por uma variJvel. 1eri)iFue se este nHmero par ou 4mpar e imprima a mensagem. #X" Mrie outro script baseando em um seguro de vida com as seguintes regras: $dade: Crupo de Disco : @\ a #; ( Bai!o #% a ;C ( Ldio ;@ aZC ( Alto
8.4. SWITCH
Observe que quando temos muitos if's encadeados estamos criando uma estrutura que n o 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:
Projeto E-jovem - Mdulo II
P"P e M#$%L $9itch e6pre$$/o% 7 ca$e valor coman!o$; ca$e valor coman!o$; ca$e valor coman!o$; ca$e valor coman!o$; ... 8 Resultado: opo 2:opo 3:opo 4:opo 5: 1" 1" 1" 1"
Nesse exemplo temos o numero = 2 onde o switch compara com os case's o valor recebido, o bloco que executado do segundo case, porm os demais tambm so executados, para que tenhamos um resultado satisfatrio temos que usar em cada case um comando chamado break. No qual tem a funo de para o bloco de execuo.
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:
Projeto E-jovem - Mdulo II
P"P e M#$%L
!0
Resultado: opo invlida A instruo passada no condiz com nenhum dos caso existentes. Por esse motivo o bloco pertencente ao comando default ser executado. O comando default pode ser inserido em qualquer lugar dentro do switch, por m 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 repeti o. Elas muito utilizadas nas linguagens de programao. Exerccio rpido:
@X" Eaa um script em OYO usando s:itcD onde receba uma variJvel e mostre as seguintes op2es: @ ( mdulo. # ( somar. 8 ( subtrair. ; ( multiplicar. % ( dividir.
8.5. WHILE
O WHILE uma estrutura de controle similar similar ao IF, onde possui uma condi o 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(express o) FAA{ comandos...}. Sintaxe: 9hile e6pre$$/o% 7 coman!o$; 8
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 la o deve se repetir, usaremos incremento ou decremento de uma varivel conforme vimos no capitulo de operadores em PHP .
Projeto E-jovem - Mdulo II
!1
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 retora a quantidade de caracteres incluindo tamb m os espaos em branco. Ele poderia ser aplicado diretamente no echo, mas no exemplo, ele determina a quantidade de loop's.
Resultado: a frase possui 14 caracteres Exerccio rpido: @X" Eaa um script Fue conte de @ at @CC. #X" Eaa um script Fue imprima na tela nHmeros de 8 em 8 iniciando com C at 9C e!: C 8 T 9...
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: !o 7 coman!o; . . . coman!o; 8 9hile e6pre$$/o%;
!2
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: @X" Eaa um script Fue conte de (@ at (@CC usando ,do :Dile.. #X" Eaa um script Fue imprima na tela somente nHmeros pares de # at #C com do :Dile.
8.7. FOR
Outra estrutura semelhante ao while o for, onde tem a finalidade de estabelecer um la o 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: #or iniciali:a2/o; con!i2/o; incremento %7 coman!o$; 8
Descrio Parte do for onde declarada uma expresso booleana. Parte do for que executado a cada interao do lao.
inicializao Parte do for que executado somente uma vez, usado para inicializar uma varivel.
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.
P"P e M#$%L
!3
Ambos exemplo geram o mesmo resultado:123456789 O for no precisa ter necessariamente todas as expresses na sua estrutura, com isso podemos criar um exemplo de for onde suas expresses so declaradas externamente.
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: @X" Eaa um script Fue receba duas variJveis [a e [b logo aps imprima os nHmeros de intervalos entre eles com o uso de ,)or..e!: a-% b - @@ imprime : % T Z \ 9 @C @@.
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. Trata-se de um for mais simplificado que compe um vetor ou matriz em cada um de seus elementos por meio de sua clusula AS. Sintaxe: #oreach e6pre$$/o;arra< a$ $valor%7 coman!o$; 8 Exemplo: Resultado: ana maria joo alex
P"P e M#$%L
!4
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 vari vel $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:
8.9. BREAK.
Outro comando importante o break, usado para abortar(parar) qualquer execu o 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: 9hile.... #or.... brea= <>1anti!a!e$ !e n?vei$>;
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.
Projeto E-jovem - Mdulo II
P"P e M#$%L
!5
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 defini-se 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 pr xima 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:
P"P e M#$%L
!6
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:
P"P e M#$%L
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.
P"P e M#$%L
!!
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.
A figura abaixo representa um array que tem como valor representa o de cores, e possui dez posies, cada posio representa uma cor, seu ndice(chave) vai de 0 at 9. Veja:
!9
Observe que quando usamos arrays associativos, a compreens o mais fcil, dando mais legibilidade ao cdigo. Porm no utilizado quando usamos um array dentro de um la o(loop), mas em outros casos sempre bom utilizar arrays associativos. Veja um exemplo:
Umas das vantagem do array associativo quando fazemos o acesso ao array, onde temos de forma clara e compreensvel o valor que aquela chave pode conter. Como por exemplo nome, onde s vai existir nome de pessoas. Veja abaixo um exemplo de acesso ao valores armazenados em um array dessa natureza.
90
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. Dica: Sempre que se depararem com arrays, onde havendo a necessidade de percorrer suas informaes independentemente da chave, procure sempre utilizar mecanismos de programao mais simplificados como FOREACH.
P"P e M#$%L
91
Temos que ter cuidado ao passar uma chave para o array, pois ela deve conter o mesmo nome de qualquer umas 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.
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 autom tica. 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 .=:
P"P e M#$%L
92
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 al m 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: $varI2J += 1.,0; ++ o tipo 0 1m ponto #l1t1ante ante$ e !epoi$. $varI2J = Ebom !iaE ; ++ aLora temo$ a m1!an2a !e tipo ponto #l1t1ante para $trinL.
Uma diferena importante de um array comum para um multidimensional a quantidades de chaves (ndices), onde cada um dos ndices representa uma dimenso. Observe o cdigo da representao ao lado.
93
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 sub-array 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;!o;arra<I chave;1 JI chave;2 J...Ichave;nJ ; 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.
P"P e M#$%L Abaixo, um exemplo que acessa todos os valores do array e imprime com quebra de linha: resultado:
94
Explicando o cdigo: Linha 2 criamos um array de duas dimenses. Linha 7 temos um foreach para percorrer o primeiro array, ele retorna na vari vel $linha os subarrys contido no array maior. Linha 8 agora temos outro foreach que vai percorrer os valores dos arrays passando pra vari vel $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 c digo 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.
95
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 cdigo-fonte 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;!1mp Exemplo: nome;!o;arra< F novo;valor% Resultado:
P"P e M#$%L array_pop Remove um valor no final de um array. Sintaxe: arra<;pop nome;!o;arra<%; Exemplo: Resultado:
96
array_shift Remove um elemento do incio de um array, sintaxe: arra<;$hi#t Exemplo: nome;!o;arra< % 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. Obs.: Todas as funes aqui apresentadas so para mostrar ao aluno as formas de trabalharmos com determinadas funes. Fica a critrio do aluno se aprofundar ou no nesse conhecimento, uma vez que exista inmeras funes. Observe a tabela abaixo com outras funes: Funes Definio Sintaxe:
array_unshift(nome_array , novo_valor) array_pad(nome_array, tamanho ,valor) array_reverse( nome_array, valor_booleano) $novo_array = array_merge(array_1,array_2)
array_unshift Adicionar um elemento no inicio de um array. array_pad Preenche um array com valores, determina a quantidade de posies.
array_reverse Recebe um array e retorna-o na ordem inversa. array_merge array_keys array_values array_slice count Uni dois arrays criando um novo array. Retorna somente as chaves do array. Cria um novo array com os valores de outro. Extrai posies de um array. Conta quantos elementos tem um array
array_keys(nome_array)
$novo_array = array_values(outro_array) $var = array_slice(nome_array, inicio, tamanho) $var = count(nome_array)
9 Sintaxe:
in_array(valor_buscado, nome_array) sort(nome_array) rsort(nome_array) explode(separador, nomer_string) implode(separador, nome_array)
Definio
Verifica se um array possui determinado valor. Ordena um array pelos valores. Ordena um array pelos valores de ondem reversa. Converte uma string em um array. Converte um array em uma string
Essa tabela mostra as funes mais comuns. Derrepentemente 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:
P"P e M#$%L
9!
Declare um array chamado nomes com 8 posies, e grave nomes de pessoas que voc conhece em cada uma delas. Aps criar o array responsa as questes 2, 4, 5, 10, 11: 2)Utilizado o array responda. a)Qual nome impresso no navegador se colocarmos o cdigo:
echo nome$I)J; b)Quais nomes aparecer se adicionamos os seguintes cdigos: #or $i= .; $i>1 ; i((% echo nome$I$iJ; c)O que acontece se chamarmos uma posio que no existe no array, exemplo: nome$I15J; 3)O que um array associativo, de exemplos: 4)Usando o comando foreach, crie uma interao onde todos os nomes possa ser impresso na tela. 5)Utilizando o mesmo cdigo, altere alguns nomes do array. 6)O que um array multidimensional? Crie um array palavras multidimensional 5x3 com os valores da tabela abaixo, e responda as questes 7,8,9: oi voc com , casa tudo vai dia bem hoje estar ? ! sim em
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 qust o 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.
P"P e M#$%L
99
Quando queremos um cdigo funcional para determinado fim, com por exemplo fazer um c lculo 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 um 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 representada 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.
Projeto E-jovem - Mdulo II
P"P e M#$%L Observe mais um exemplo, onde a funo declarada porm no possui a clusula return. Resultado:
100
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 execu o. 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, .
P"P e M#$%L
101
O exemplo acima mostra que passamos um valor de $a para a fun o, 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 par metro 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. Observe uma exemplo mais complexo abaixo:
P"P e M#$%L
102
Tambm podemos determinar mais de um retorno desde que eles no sejam acessado ao mesmo tempo, observe o exemplo abaixo: Esse cdigo mostra de forma clara que no existe a possibilidade de retornarmos mais de um return, caso isso ocorresse, teramos um erro, ou no funcionamento da funo.
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
Projeto E-jovem - Mdulo II
P"P e M#$%L
103
P"P e M#$%L
104
P"P e M#$%L Dica: para trabalharmos com arquivos sempre importante sabermos se a pasta ou o arquivo tem permisses dentro do Linux, caso isso no acontea, o arquivo no ser criado, lido ou at mesmo gravado. Veja um exemplo do uso do comando fopen:
105
Caso o arquivo no exista, ele criando dentro da pasta onde o arquivo *.php foi criado, ou seja, no nosso exemplo o arquivo se chama index.php e estar dentro da pasta www, aps executamos esse comando teremos um novo arquivo com o nome meu_arquivo.txt.
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:
P"P e M#$%L
106
No exemplo, fizemos a chamada do comando fwrite trs vezes e escrevemos a cada chamada um valor diferente concatenando com \n.
Nesse exemplo utilizamos o arquivo anterior onde foi escrito tr s 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:
10
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+al1no+me1;novo;ar>1ivo.t6t Para renomearmos um arquivo usamos: rename sintaxe: rename nome;!o;ar>1ivoF novo;nome% Para apagarmos um arquivo usamos: unlink sintaxe: 1nlin= nome;!o;ar>1ivo% Observe um exemplo, onde renomeamos o arquivo arquivo_texto.txt e apagamos o arquivo meu_arquivo.txt: meu_novo_arquivo.txt para
P"P e M#$%L
10! Aps executarmos isso no navegador, percebemos as mudanas ocorridas dentro do diretrio.
P"P e M#$%L Observe o exemplo envolvendo os trs comandos abaixo: Exemplo: Resultado:
109
Observe que o comando getcwd obtm o caminho completo de onde o arquivo PHP que cont m o cdigo-fonte estar guardado.
a)Que tipo de arquivo gerado na linha 2 e aonde o mesmo criado. b)Que o parmetro w da linha 2 do cdigo representa. c)Qual a finalidade do comando fwrite da linha 3 do cdigo. d)Qual o principal motivo de fecharmos o arquivo com o comando fclose da linha 4 do cdigo. Crie um arquivo de texto chamado frases.txt usando o comando fopen, e responsa as quest es 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 apage 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.
Projeto E-jovem - Mdulo II
P"P e M#$%L
110
Abordaremos nesse capitulo algumas formas de interaes utilizando a linguagem de programao PHP e a linguagem de marcao HTML. Alm disso, mostraremos alguns componentes mais utilizados para a construo de um sistema ou uma pgina web, e de que forma o PHP pode receber, processar, e enviar essa informao. Utilizamos linguagens para exibir os dados da aplica o, seja ela para simples conferncia, em relatrio ou ainda possibilitando a adio e excluso de registros. Criaremos a principio formulrios e listagem.
12.1. Formulrios
Podemos definir fomulrio como um conjuntos 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 aplica o 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 minimo as seguintes caractersticas, observe:
name Nome atribudo ao formulrio para sua identificao. method Mtodo POST ou GET como veremos mais adiante. action Caminho do arquivo que receber os dados do formulrio ao ser enviado. Os elementos do formulrio sero preenchidos com os componentes input onde a tag <input> conforme o exemplo abaixo:
A tag input pode ser composta por vrios elementos onde neles podemos definir o tipo,nome, e o
P"P e M#$%L 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.
111
Observe a tabela abaixo com a definio dos tipos que podemos atribuir ao elemento type do input. type texto password Descrio Elemento utilizado para entra de texto simples, um dos mais utilizados. Elemento utilizado para entrada de senhas, exibe * no lugar dos caracteres inseridos pelo usurio. Utilizado para exibir caiar de verificao, muito utilizado para perguntas booleanas. Exibe botes para seleo exclusiva, utilizado para seleo de apenas um item. Utilizado para seleo de arquivos, esse tipo muito comum quando queremos enviar algo pelo navegador(browser). utilizado para armazenar um campo escondido dentro do formulrio. Usado para exibir um boto na tela, porm sua ao definida por outra linguagem como javascript. Boto usado para submeter os dados do formulrio no servidor, ele envia as informaes de acordo com as informaes preenchidas na tag <form>. Utilizado para limpar todos os campo do formulrio, voltando ao valor inicial. Tipo utilizado para exibir uma lista de valores contido na lista de seleo do usurio (cada valor guadardo rm uma tag <option>, porm s pode ser selecionado uma opo. No visvel ao usurio. Exemplo:
checkbox radio
file
hidden button
submit
reset select
rea de texto disponibilizado ao usurio, possui mltiplas linhas(rows) e colunas (cols) que <textarea> podem ser determinados dentro de sua tag. No um tipo de input, mas uma tag HTML para formulrio. A tag <textarea> pode ser definida conforme o exemplo de cdigo abaixo:
Tag:
P"P e M#$%L
112
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:
113
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 .
P"P e M#$%L
114
Podemos notar a passagem de dois valores: ?hl = pt-br, logo aps &shva=1, ou seja, temos ento a criao da varivel hl que recebe o valor pt-br, e tambm a varivel shva que recebe como valor 1. Veja exemplos de cdigos com links enviando valores por mtodos GET.
P"P e M#$%L
115
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 anonimo, para o arquivo gravar.php . Formulrio(<form>) Envias as informaes preenchidas no input nome via GET para o arquivo gravar.php .
Resultado Browser:
no
116
Em casos que precisamos de mais segurana, onde o ocultamento de informao necessrio, o mtodo GET no uma boa opo. Observe no exemplo anterior que qualquer valor passado pela URL fica visvel, e o usurio pode ver informaes pessoais como um login e uma senha. Dica: Em casos semelhante, utilize sempre o mtodo POST.
Mudana no mtodo
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).
P"P e M#$%L
11
A varivel global $HTTP_USER_AGENT tem como finalidade retornar informa es 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: $trpo$ $trinL;maior F $trinL;menor %
Nesse exemplo procuramos as palavras Firefox e MSIE dentro do valor retornado pela vari vel global $HTTP_USER_AGENT. Dessa forma, podemos tratar o resultado comparando-o com 0, ou 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:
P"P e M#$%L
11!
12.5. Cookies
Cookies so mecanismos para armazenar e consultar informa es. Eles so armazenados na maquina do cliente que acessa ao servidor php, e possui v rias atribuies que so definida 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. Detcoo=ie nome;!o;coo=ieF$e1;valorFtempo;!e;vi!aFpathF !om?nioFcone6/o;$eL1ra% Onde na tabela abaixo temos a descrio de cada atributo:
Descrio
o nome que, posteriormente, se tornar a varivel e o que o servir de referncia para indicar o cookie. 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 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. endereo da pgina que gerou o cookie automtico domnio ao qual pertence o cookie automtico Indica se o cookie dever ser transmitido somente em uma conexo segura HTTPS.
P"P e M#$%L
119
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 da pgina 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 determinalos na hora da criao do cookie dentro do cdigo php.
Nome do Cookie Valor do cookie
Mostraremos agora um cdigo onde atribumos o tempo de vida do cookie, para isso devemos capturar o tempo com a 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:
O novo resultado o seguinte: Esse cookie tem a validade de 3600 segundos, ou seja 1 hora, com isso conclumos que o navegador fez seu acesso as 14:47:36. Isso muito importante para a programao dos cookies. Se quisermos que ele exista por um determinado tempo, temos que calcular tudo em segundos da seguinte forma: $tempo = time %+ ).00'2*'M%; Esse cookie tem seu tempo de vida de 7 dias, pois 3600 segundos = 1 hora, 24 horas = 1 dia e 7 * horas_de_um_dia resulta em 7 dias. Exemplo:
120
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:
Resultado: valores a serem gravados Observe agora um exemplo de um cdigo utilizado para contar as visitas de um site usando cookie:
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 diferen as 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 sess o no expirar (por inatividade, ou porque em algum ponto voc mandou que ela expirasse). Para criarmos uma sesso utilizaremos a funo abaixo: Dessa forma estamos iniciando um conjunto de regras. essa funo deve sempre estar no incio do cdigo-fonte, com exceo de algumas regras. 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.
Projeto E-jovem - Mdulo II
P"P e M#$%L Com o comando $_SESSION podemos gravar valores na sesso, veja um exemplo:
121
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 vari vel do tipo Array. Para resgatar o valor da sesso, basta fazer a chamada do comando passando o nome da sess o, 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 ): O resultado de acordo com a existncia ou no da sesso.
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 sess o, 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: Dessa forma desalocamos(destruirmos) a sesso minha_sessao, porm se existirem outras, elas ainda continuaro ativas.
P"P e M#$%L
122
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. Sintaxe: require 'nome_do_arquivo.php';
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. Sintaxe: include_once 'nome_do_arquivo.php';
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. Sintaxe: require_once 'nome_do_arquivo.php';
P"P e M#$%L
123
1. 2. 3. 4.
Erros de funes (function errors). Avisos (warnings). Erros de processamento (parser error). Observaes (notice).
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 apare a 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:
Mensagem de erro com a opo display_errors = On do php.ini ativada: Warning: strtolower() expects exactly 1 parameter, 0 given in /var/www/index.php on line 2 O erro mostra que devemos passar um parmetro para a funo strolower() na linha 2, mas podemos ignorar o erro usando o @.
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 configura o do PHP (php.ini), em alguns casos no funciona.
P"P e M#$%L
124
P"P e M#$%L
125
Nome do usurio.
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 informa es 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.
Projeto E-jovem - Mdulo II
P"P e M#$%L
126
O MySQL prov um conjunto bem grande de tipos de dados, entre eles podemos citar os principais: Tipo de dado
CHAR(M) VARCHAR(M) VARCHAR
Descrio
strings de tamanho fixo entre 1 e 255 caracteres. strings de tamanho flexvel entre 1 e 255 caracteres. 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. FLOAT [(M,D)] DATE: nmeros decimais com D casas decimais. armazena informao relativa a datas. O formato default 'YYYY-MM-DD' e as datas variam entre '0000-00-00' e '9999-12-31'. MySQL prov um poderoso conjunto de comandos para formatao e manipulao de datas. 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. um nmero inteiro que pode ser 0(falso) ou 1(verdadeiro). nmero em vrgula flutuante de dupla preciso. Os valores permitidos vo desde -1.7976931348623157E+308 at -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 at 1.7976931348623157E+308
Existem outros tipos de dados, para mais detalhes consulte o site oficial do MYSQL (http://www.mysql.com/). Abaixo temos exemplos dessas estruturas:
P"P e M#$%L
12
Dica: Os comando funcionam normalmente em minusculo, mas por padr o bom sempre utilizar os comando SQL em maisculo para diferenci-los dos nomes e atribuies, facilitando assim a organizao. 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 qualquer operao. Para isso utilizado comando USE com a seguinte sintaxe: XDB Enome;!o;bancoE;
Exemplo: Com esse comando, todas as operaes que forem realizadas afetar de forma direta somente o bando de dados alunos. A mensagem Database changed significa bando de dados alterado. CREATE TABLE Uma base de dados pode possuir vrias tabelas, onde cada uma tem seu papel especifico e est o relacionadas de forma direta ou no, para criarmos uma tabela usaremos a seguinte sintaxe: CUBHRB RHWCB Enome;!a;tabelaE Enome;!o$;campo$E tipo;!e;!a!o tamanho% Ecoman!o$...EF ... F ... %; 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:
12!
DROP Para apagar o banco de dados ou a tabela, usamos o comando DROP com a seguinte sintaxe: VUTS VHRHWHDB Enome;!o;bancoE; VUTS RHWCB Enome;!a;tabelaE; Exemplo: //Usado para apagar o banco de sados //Usado para apagar tabelas.
SELECT Permite recuperar informaes existentes nas tabelas. Sintaxe: DBCBCR Ecampo1EFEcampo2EF...F... AUTM Enome;!a;tabelaE; 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
129
Usado para atualizao dos dados, que altera os valores dos campos em uma tabela especificada com base em critrios especficos. Sintaxe: XSVHRB nome;!a;tabela DBR campo1 = Enovo;valorEFcampo2 = Enovo;valorEF...F... Z[BUB crit0rio; 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 cl usula FROM que satisfaz a clusula WHERE. Sintaxe: VBCBRB AUTM nome;!a;tabela Z[BUB crit0rio; Exemplo: Foi deletado a informao do id 3;
Obs.: muito cuidado quando usar o comando DELETE. Caso o crit rio 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
DISTINCT AS FROM WHERE ORDER BY COUNT(*) AND PRIMARY KEY FOREIGN KEY
Descrio
Elimina linhas duplicadas na sada. um alis para o nome da coluna. Lista as tabelas na entrada. Critrios da seleo. Critrio de ordenao das tabelas de sada. ASC ordem ascendente, DESC ordem descendente. Usado no SELECT, conta quantos registros existem na tabela. Usado para dar continuidade a mais de um critrio. Chave primaria definida na criao da tabela, evitando duplicidade de dados em um mesmo campo. 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.
P"P e M#$%L
130
Informaes do servidor
Aps o login visualizaremos a seguinte tela:
Menus
131
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:
Nome da tabela.
Aps executarmos a tabela, visualizaremos uma serie de informa es detalhadas dos campos da tabela criada. Definimos ento, os tipos de dados que a tabela vai suportar e seus respectivos tamanhos.
A tabela abaixo mostra os campos adicionados. Campo Tipo id nome rua bairro cidade int varchar varchar varchar varchar tamanho nulo 11 30 40 40 40 x x x x ndice primary Auto incremento x
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 deixado do jeito que esto, agora s clicar em Salvar
P"P e M#$%L
132
Dica: observe que a cada procedimento o comando a ser executado exibido. 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:
Ao entrar na opo inserir, ser exibido a seguinte tela: Agora basta inserir os valores e executar em seguida, lembrando que no se deve preencher o campo id, pois ele auto incremento. Para alterar os valores dos campos entre novamente na tabela e observe a seguinte tela: Temos apenas um registro.
133
Agora basta editar os valores. At agora colocamos em prtica os seguintes comandos: INSERT quando inserimos dados. SELECT quando visualizamos as informaes da tabela. UPDATE quando editamos os valores adicionados. DELETE ao apagamos o campo da tabela. Abaixo temos uma tabelas com algumas da principais funcionalidades do PhpMyAdmin. Menu
Visualizar Estrutura SQL Procurar Inserir Exportar Importar Operaes Privilgios Designer
Funcionalidade
Aqui possvel visualizar os registros da tabela e tambm modificar cada registro individualmente. Nesta opo possvel ver os campos da tabela, tambm modificar estes campos e at mesmo exclu-los. A opo SQL permite voc digitar livremente um comando SQL diretamente numa caixa de texto. possvel realizar pesquisas nos registros da tabela. Este recurso muito til quando se deseja encontrar determinado registro em uma tabela muito extensa. Permite inserir um registro na tabela. Com a opo Export (Exportar), possvel gerar um arquivo texto com todo o contedo da tabela, juntamente com sua estrutura. Importa um arquivo com comandos sql para dentro do banco. Igual e do mesmo tipo permite realizar modificaes na tabela, como renomear, alterar ordem, mov-la para outra database, alterar seu tipo e outras operaes. rea onde feita a administrao de usurios e suas permisses. Mostra todas as tabelas e seus relacionamentos em diagramas.
Obs.: No abordamos definies de chave primaria (PRIMARY KEY), e chave estrangeira(FOREIGN KEY), pois esse assunto mostrado com mais detalhes em modelagem de banco de dados.
P"P e M#$%L
134
P"P e M#$%L
135
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'); mysql_select_db() define o banco de dados ativo no servidor que associado ao identificador de conexo especificado. Se nenhum identificador de conexo especificado, a ultima conexo aberta assumida. Veja um exemplo de seleo de database: Aps toda execuo do cdigo, podemos utilizar o comando mysql_close(); para fechar a conexo. Passamos no exemplo o nome do banco que criamos no cap tulo anterior, caso no exista crie o banco conforme foi mostrado no capitulo 9.2.2 ou 9.3.1 .
P"P e M#$%L
136
mysql_query
Esse comando utilizado quando queremos enviar uma query para o banco de dados ativo no servidor da conexo informada pela conexo. Sintaxe: m<$>l;>1er< Ecoman!o;D\CEFEi!;cone6/oE%; 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 forma direta na funo mysql_query como se fosse no Konsole, com a Tabela criada. 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, por m a coluna tem que ser determinada no comando SQL. Sintaxe: m<$>l;re$1lt Ecoman!o;D\CEFEn1mero;!a;linhaEFEn1mero;!a;col1naE%; Exemplo:
P"P e M#$%L
13
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: m<$>l;#etch;arra< Ei!;re$1lta!o;>1er<E%; Esse comando recebe como parmetro id_resultado_query que o retorno do comando mysql_query. Dessa forma, ele monta um array com os valores de acordo com o comando SQL. Veja como chegamos em um resultado usando HTML, PHP e comandos SQL no MYSQL conforme o exemplo abaixo: 1 - Criamos uma tabela cadastro no banco de dados alunos com o PhpMyAdmin com as seguintes caractersticas:
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).
4 - Agora criamos um query(comando SQL) para selecionar os valores e gravamos em uma varivel, lembrando que isso uma string e no tem funcionalidade at ento. 5 - Criamos ento um id_resultado_query com o comando mysql_query, recebendo a query e a conexo como parmetro. 6 Agora usamos o comando mysql_fetch_array para criar um array de informaes, porm adicionamos dentro de um while e criamos a cada loop uma linha na tabela criada em HTML. Essa a estrutura da tabela que iremos usar, basta adicionar as tag's PHP dentro do documento. Lembrando que esse arquivo se chama index.php e tem que estar dentro da pasta ver/www.
13!
A varivel $linha a cada loop, torna-se um array de 3 posies, e cada posio definida pelos nomes do campos da tabela. Cdigo completo: Resultado:
P"P e M#$%L 1 - Criao do arquivo conexao.php, dever conter os cdigos conforme abaixo:
139
Podemos observar o comando mysql_close() no final do arquivo, onde sua funcionalidade fechar a conexo. Alm disso podemos observar cada parmetro sendo guardado em uma varivel para facilitar a organizao do cdigofonte. Esse arquivo criado e depois includo nos demais arquivos. Isso otimiza o cdigo uma vez que no precisamos us-lo de forma repetitiva toda vez que precisarmos de uma conexo. 2 - Trabalharemos agora com o arquivo index.php, o primeiro passo criarmos um formulrio para envio de informao: O mtodo usado o post, o arquivo que receber as informaes o evento.php, porm alm disso e passado uma varivel do tipo GET chamada cadastro=true, para identificarmos mais adiante qual a a o desejada. O segundo passo criarmos o cdigo de listagem no mesmo arquivo, onde atravs dele podemos visualizar as informaes existente no bando de dados:
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
P"P e M#$%L que foi montada. 3 - Criaremos agora o arquivo editar.php conforme o cdigo abaixo:
140
O primeiro passo criarmos o cdigo que vai retornar um array com os valores dos campos do database, porm existe uma condio usada no comando SQL. A consulta deve retornar o resultado quando o id passado via GET pela varivel ?editar for igual ao id existente na tabela. Observe o cdigo-fonte responsvel por essa consulta:
Comando SQL compara id gravado no banco com o id parrado via mtodo GET.
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: Criaremos primeiro o cdigo responsvel pelo cadastro (INSERT).
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 aspras dupla para separar
Projeto E-jovem - Mdulo II
P"P e M#$%L
141
a 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.
Assim encerramos o arquivo evento.php com um link Voltar no final. Pode-se notar que, cada bloco de cdigo muito semelhante, mudando apenas o comando SQL e a verificao isset dentro do IF. Caso determinada varivel GET exista, o IF a ser executado aquele que tem ligao com evento passado. Veja o resultados de algumas telas:
P"P e M#$%L
142
&oomla 1'5
145
&oomla 1'5
146
apresentar argumentos para adoo do Joomla!, mas podemos enumerar alguns muito importantes:
Joomla! decididamente software livre e no h perspectiva de mudana com relao a isso (isto , vai continuar disponvel gratuitamente); J existem vrios mdulos e componentes disponveis, criados a partir da base herdada do Mambo; A popularidade do Joomla! est crescendo rapidamente, logo, a sua comunidade tambm; A equipe por trs do Joomla!, composta por membros chave criadores do Mambo, est fortemente comprometida com o projeto e est disposta a modernizar o software continuamente; um dos CMS com mais recursos disponveis e de fcil utilizao; Foi escrito com PHP e MySql, dois dos softwares open source mais populares da Internet.
O Joomla uma ferramenta de CMS muito poderosa, prova disto o prmio recebido, o Linux Awards, alm de possuir uma comunidade ativa, que est sempre buscando inovaes.
&oomla 1'5
14
Um CMS permite que a empresa tenha total autonomia sobre o conte do e evoluo da sua presena na internet e dispense a assistncia de terceiros ou empresas especializadas para manutenes de rotina. Nem mesmo preciso um funcionrio dedicado (webmaster), pois cada membro da equipe poder gerir o seu prprio contedo, diminuindo os custos com recursos humanos. A habilidade necessria para trabalhar com um sistema de gest o de contedo no vai muito alm dos conhecimentos necessrios para um editor de texto. A aparncia de um website criado com um CMS customizvel, atravs da utilizao de templates que podem ser facilmente substitudos. Em suma, o grande diferencial de um CMS permitir que o contedo de um website possa ser modificado de forma rpida e segura de qualquer computador conectado Internet. Um sistema de gesto de contedo reduz custos e ajuda a suplantar barreiras potenciais comunicao web reduzindo o custo da criao, contribuio e manuteno de contedo. Um grande exemplo de CMS o Wordpress, um sistema em PHP , Open Source e de altssima qualidade para gerir blogs ou portais cada vez mais completos. O Wordpress um CMS totalmente customizvel por themes (ou templates). Outro grande exemplo de CMS o Joomla!, onde facilmente realizada a edio de contedos, a partir do prprio site, podendo tambm ser usado para o gerenciamentos de intranet.
&oomla 1'5
14!
Para criar o site chamado "meusite", basta criar a pasta de nome " meusite", abaixo da pasta htdocs ("C:xampp\htdocs\meusite") e colocar todos os seus arquivos do site nesta pasta. Voc poder criar quantos sites quiser com o nome que desejar, bastando criar v rias pastas, uma para cada site. Para acessar seu site, simplesmente acesse no navegador http://localhost/meusite. Feito isso, precisamos agora entrar no MSQL para criarmos um BANCO para instala o do Joomla. Crie um banco com o nome joomla
&oomla 1'5
149
&oomla 1'5
150
Aps escolher o idioma de instalao clique no boto Prximo, disponvel no canto superior direito. No Passo seguinte, o Joomla! verifica as configura es do servidor e do PHP . altamente recomendvel que todas as configuraes sejam compatveis com o Joomla! Para assegurar um perfeito funcionamento e garantir a seguran a.
&oomla 1'5
151
O Joomla! distribudo sob a licena GNU/GPL que est disponvel para leitura no momento da instalao. Para ler uma verso em portugus da licena acesse o site: (http://creativecommons.org/licenses/GPL/2.0/legalcode.pt). Concordando com a licen a continue a instalao clicando no boto Prximo. O prximo Passo da instalao a configurao do Banco de Dados. O Joomla! 1.5 oferece suporte a mais de uma op o de banco de dados: MySQL e o MySQLi. Ser usado o MySQL nesta instalao, por ser o banco de dados mais popular na Internet.
Ainda no Passo 4, algumas configuraes avanadas podem ser feitas: Excluir Tabelas Existentes caso uma base de dados j existente seja reutilizada, o Joomla! oferece a opo de excluir as tabelas existentes nela. Backup das Tabelas Antigas na reutilizao de uma base de dados, o Joomla! Pode realizar o backup dos dados j existentes antes de criar suas tabelas. Prefixo da Tabela importante para diferenciar as tabelas do Joomla! de outras, caso coexistam na mesma base de dados. Por padro ser usado o prefixo predefinido jos_. Note que as Configuraes Avanadas so opcionais, sendo que no necessrio alterar
Projeto E-jovem - Mdulo II
&oomla 1'5
152
&oomla 1'5
153
No canto superior direito so exibidos dois botes: Site ao clicar nele sistema redireciona para a pgina principal do site. Conforme ilustra a imagem abaixo.
&oomla 1'5
154
Admin ao clicar nele o sistema redireciona para a p gina de login da interface de administrao. Conforme ilustra a imagem abaixo.
Pronto, o Joomla est instalado e funcionando, a nica coisa a fazer agora : Para acessar o seu site, http://localhost/nomedapasta e, para acessar o Painel de Administrao, http://localhost/nomedapasta/administrator/
&oomla 1'5
155
&oomla 1'5
156
Anonymous
Registered
Autor
Editor
Publisher.
Manager
Administrator
Super Administrator.
19.1. Acessos
Para organizar o acesso s sees do site, e para as permisses de publicao de contedo, o Joomla utiliza diversas categorias de usurios. A primeira diviso entre usurios registrados e noregistrados. Os usurios registrados se dividem em diversas categorias, com diversos graus de acesso s funes do Joomla.
&oomla 1'5
15
visitantes do site faam seus registros. Esta possibilidade interessante no caso do site ter um informativo que enviado para o seu pblico, ou em casos semelhantes. O usurio pode registrar-se clicando em Cadastre-se!, que fica logo abaixo dos campos de login para os usurios j registrados. O visitante que se registra desta forma fica com o status de Usu rio Registrado (veja a definio das categorias de usurios do Joomla logo abaixo). Caso voc no queira que visitantes possam se registrar no site, acesse a Interface de Administra o e, na seo Global Configuration, aba Site, marque No no item Allow User Registration. Assim, o link Cadastre-se ser removido de seu porta.
19.4.2. Autor.
Pode inserir contedo no site (textos, imagens, etc.) Este contedo, porm, no publicado imediatamente no site. Ele precisa ser revisado e ter a sua publica o autorizada por um usurio que seja Publicador (Publisher), ou por quaisquer usu rios das categorias de Administrao (Gerenciador, Administrador, Super-Administrador). Aps a publicao, o autor pode modificar os textos de sua autoria. No pode, entretanto, modificar o contedo criado por outros usurios.
19.4.3. Editor.
Alm de inserir contedo, da mesma forma que o Autor, tambm pode alterar qualquer item do site, mesmo que no tenha sido criado por ele. Por exemplo, esta deve ser a categoria das pessoas responsveis pela reviso dos textos de um site. importante colocar que o Editor no pode autorizar a publicao de contedos enviados pelos usurios cadastrados como Autores ou Editores; ele pode apenas alterar textos cuja publica o j tenha sido realizada pelos Publicadores ou pelos usurios das categorias de Administrao.
&oomla 1'5
15!
19.5.2. Administrador
Em relao ao Super Administrao, as restries dos Administradores so: 1.Alterar as informaes do Super Administrador (senha, e-mail) 2.Acessar as configuraes globais (Global Configuration) da Interface de Administrao. Nestas configuraes, esto a senha para o acesso ao banco de dados, e a definio do idioma default do portal. 3.Permisso para enviar e-mail aos usurios registrados no site; 4.Escolha do template para o site. Os responsveis pelo cadastramento de usurios devem ser registrados como Administradores. No caso de projetos educacionais, os professores ou quem for respons vel pelo cadastramento de alunos, deve estar cadastrado como Administrador.
&oomla 1'5
159
Aps abrir a opes acima, voc ver a lista de sees atualmente existente no seu site, clica no boto Novo, no menu de cones, no canto superior direito.
Agora, preencha o formulrio escolhendo o ttulo e a descrio da Seo. A descrio poder ou no ser exibida (isto poder ser configurado no item de menu que leva categoria)
&oomla 1'5
160
Observao: veja que vai aparecer um campo para voc especificar a seo que foi criada anteriormente.
Realize o login (por hbito, o formulrio para digitao de nome de usurio e senha sempre est presente na capa do site, e fica, em geral, no canto superior esquerdo ou nas laterais) no site ou no Painel de Administrao; Aps realizar o login, Clique em Contedo Administrar Artigos
Preencha o formulrio para insero de novo texto. Os campos principais so: Ttulo;
Projeto E-jovem - Mdulo II
&oomla 1'5
161
Seo e Categoria: escolha a seo onde o texto deve ficar; Texto principal: aqui, coloque o contedo do texto.
Logue-se no Painel de Administrao; No menu Menu, escolha o menu onde deseja incluir o link. No nosso caso, o mainmenu.
&oomla 1'5
162
Clique no cone Novo, no menu de cones no canto superior direito; Agora, preciso escolher o tipo de link que estamos criando. Escolha Link Contedo do Item. No formulrio a seguir, escolha o nome do link (este nome o texto que ser exibido no menu) e o item de contedo para o qual estamos criando o link; Neste formulrio, voc tambm pode definir o nvel do link. O Joomla permite que voc crie links que sejam 'filhos' de outros links, que s so exibidos quando o linkpai selecionado. No nosso caso, no queremos criar um submenu; por isso, deixamos o Parent Item padro, Top. Clique em Salvar quando estiver concludo.
&oomla 1'5
163
Para podermos fazer as alteraes nos menus, devemos entrar na opo Itens de Menu, logo aps aparecer outra tela com as opes de publicao e ordem dos menus.
&oomla 1'5
164
22.3.2. Miscellaneous
1. Separador / Espao em branco: Cria espao em branco ou separador do menu; 2. Wrapper: Cria um iframe com uma pgina de site dentro do Joomla; 3. Enviar-contedo: Cria um boto enviar para os usurios enviarem contedos.
22.3.3. Componentes
Componente: Exibe a interface do site pblico para um componente; Link - Item de Componente: Cria um link a um componente existente no Joomla; Link - Item de Contato: Cria um link a um item de contato publicado; Link - Notcias Externas: Cria um link a uma nica notcia externa publicada; Tabela - Categoria de Contato: Exibe uma tabela com os itens de contato; Tabela - Categoria de Notcias Externas: Exibe uma tabela com os itens de not cias externas de uma categoria especfica; Tabela - Categoria de Weblink: Exibe uma tabela com os itens de weblink de uma categoria de weblink especfica.
22.3.4. Links
Link - Contedo Esttico: Cria um link para um item de contedo estatstico; Link - Item de Componente: Cria um link para um componente existente no Joomla; Link - Item de Contato: Cria um link para um item de contato publicado; Link - Item de Contedo: Cria um link do item de contedo estatstico publicado com visualizao completa; Link - Notcias Externas: Cria um link para uma nica notcia externa publicada; Link Url: Cria um link para uma URL (endereo na web).
&oomla 1'5
165
23.1. Observando a imagem acima, teremos os seguintes tpicos: 23.1.1. Primeiro tpico
1. 2. 3. 4. Enviar; Criar; Cancelar; Ajuda.
Criar Diretrio: Local onde definido o nome da pasta ou diretrio que ser criado.
&oomla 1'5
166
1. Administram-se os itens.
&oomla 1'5
16
Aps ter criado a categoria, prossegue-se para a cria o dos contatos na opo Administrar contatos. Cada contato pode ter informaes como endereo e telefone, e tambm oferecer um formulrio, para que o usurio envie mensagens atravs do site. Estas mensagens so enviadas para o e-mail do contato. Tambm possvel configurar as informaes de contato que sero exibidas. Por exemplo, a pgina de contato pode exibir um telefone de contato, ou endere o de correspondncia, alm do formulrio de envio de mensagens eletrnicas. Preencha os campos do formulrio que ser apresentado. Em Parmetros, voc poder escolher que informaes do contato sero exibidas ao visitante de seu site.
&oomla 1'5
16!
Na pgina com a lista de contatos, voc poder criar outros contatos. Isso permitir que o visitante do seu site escolha para onde a mensagem ser enviada.
&oomla 1'5
169
Observao: Vale observar que na tabela acima existe um campo chamado TIPO, esse campo mostra o tipo de arquivo que usado. O nome do mdulo fictcio somente para efeito de visualizao, seu nome real indicado pelo tipo.
&oomla 1'5
1 0
Definio de um ttulo para o mdulo; Escolha se quer que ele seja exibido ou no no frontpage; Em qual posio ele ser exibido no frontpage; Ordem em que ele ficar ajustado aos outros mdulos; Definio do nvel de acesso, a quem ele ser exibido; Se vai estar publicado ou no;
Projeto E-jovem - Mdulo II
&oomla 1'5
1 1
Utilizao de um css personalizado no mdulo; Utilizao dos plugins existentes na instalao do Joomla; Escolha das pginas em que ele ser exibido; Criao do contedo.
Menu do Painel de Administrao > instaladores > mdulos; Procurar o arquivo mod_nomedomodulo; Enviar e instalar
25.3. Componentes
O conceito de componentes do Joomla! talvez seja uma das grandes vantagens em rela o maioria dos CMS disponveis. O componente uma forma de gerenciar contedos ou agregar funcionalidades muito especficas que no seria possvel com as funes padres do Joomla! Por exemplo: O componente Web Links permite gerenciar a rea de links do site. O componente Banners permite gerenciar banners, rotacionando aleatoriamente e contando o nmero de cliques. Existem centenas (ou milhares) de componentes como galerias de fotos (RSGallery2, zOOm Gallery), sistemas de traduo (JoomFISH), gerenciadores de formulrios, etc. Grande parte dos componentes so gratuitos (GNU GPL), porm alguns possuem licena comercial (que geralmente so de baixo custo). Caso no exista um componente adequado necessidade do site, pode ser feita a adaptao de um componente existente ou pode-se criar um componente especfico. Obervao: Para instalao dos componentes, segue-se os mesmos passos vistos na instalao dos mdulos.
&oomla 1'5
1 2
26.1. Designer
Todo o designer est ligado a um CSS colocando os estilos e modelando todo o Template ou Tema, utilizado tanto na FrontEnd como no BackEnd.
26.2. Programao
Podemos editar toda sua programao utilizando o editor de HTML dentro do BackEnd, como o prprio arquivo PHP por um editor como Dreamweaver ou um simples bloco de notas.
&oomla 1'5
1 3
M d u lo le ft: N e s te e x e m p l o , c r ia d o p a ra c o n te r o m e n u l a te r a l e s q u e r d o .
M d u lo b a n n e r: N e s te e x e m p lo , c r ia d o p a r a c o n te r o b a n n e r d o s ite .
Observao: Sempre que criarmos uma nova posio dentro do cdigo, no podemos esquecer de tambm cri-la no Painel de Administrao.
&oomla 1'5
1 4
Seria o default, que chama tabelas; <?php mosLoadModules('top',-1); ?> Serve para voltar s o mdulo, sem tags a mais; <?php mosLoadModules('top',-2); ?> Serve para voltar como xhtml; <?php mosLoadModules('top',-3); ?> Serve para retornar valores, para se fazer cantos arredondados; <?php echo $mosConfig_live_site;?> Serve para imprimir o path (caminho) do site, com isso quando mudar o nosso site para o servidor, no precisa ficar alterando caminhos; <?php mosPathWay(); ?> O pathway faz uma navegao do site, nada demais; <?php mosMainBody();?> Local onde ser definido todo o contedo dinmico do site; <?php defined( _VALID_MOS ) or die( Direct Access to this location is not allowed. ); ?> Faz com que tenhamos certeza que o arquivo no ser acessado diretamente; <meta http-equiv=Content-Type content=text/html; <?php echo _ISO; ?> /> Que set de caracteres estamos usando, _ISO uma constante especial que define o set de caracter em uso(encoding); <link href="<?php echo $mosConfig_live_site;?> /templates/rhuk_solarflare_ii/css/template_css.css" rel="stylesheet" type="text/css" /> Esta linha linka o arquivo CSS no template; <img xsrc="<?php echo $mosConfig_live_site;? /templates/zymic/images/slogan_box.gif" alt="slogan box" /> Esta linha linka a imagem no template.
&oomla 1'5
1 5
&oomla 1'5
1 6
Abaixo seguem alguns links interessantes para voc baixar arquivos para o Joomla. Joomla e suas verses, Mdulos, Componentes, Tutoriais e Vdeo Tutoriais; Joomla Amazonia http://www.dicasetutoriais.com/ Joomla Brasil http://www.joomla.com.br/ Joomla.org http://www.joomla.org/ Comunidade Portuguesa www.joomlapt.com
Cid Ferreira Gomes Governador do Estado do Cear Maria Izolda Cela de Arruda Coelho Secretria da Educao do Estado Maurcio Holanda Maia Secretrio adjunto da Secretaria da Educao do Estado Professor Cludio Ricardo Gomes de Lima Msc. Reitor do Instituto Federal de Educao, Cincia e Tecnologia do Cear Professor Edson da Silva Almeida Msc. Diretor Executivo do CPQT Andrea Arajo Rocha Coordenadora Geral do Projeto e-Jovem SEDUC Professor Ccero R. B. Calou Msc. Gerente de Projetos do CPQT Coordenador do Projeto e-Jovem - Mdulo II - IFCE-CPQT Jlio Csar Cavalcante Bezerra Coordenador do Projeto e-Jovem - Mdulo II SEDUC Eraldo Ferreira da Silva Filho Projeto e-Jovem - Mdulo II Edio de Contedo (Joomla) Alex de Sousa Pulvirenti Projeto e-Jovem - Mdulo II Edio de Contedo (Lgica de Programao / PHP & MySQL) Fabrcio Silva Rosal Projeto e-Jovem - Mdulo II Reviso de Contedo (Lgica de Programao / PHP & MySQL) Jucimar de Souza Lima Junior Projeto e-Jovem - Mdulo II Formatao Final