Você está na página 1de 177

Sumrio

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

Captulo 1. Introduo a Lgica de Programao


Objetivos
Apresentar os conceitos elementares de lgica e sua aplicao no cotidiano; Definir o que um algoritmo; Estabelecer uma relao entre a lgica e o algoritmo; Mostrar exemplos de como utilizar a lgica em situaes do dia a dia, apresentando de forma simples e coerente.

1.1. Noes de Lgica


Lgica algo muito comum na nossa vida, a prova disso o que fazemos durante o dia, pois mesmo sem perceber usamos a lgica todo momento, por exemplo: Ao acordamos: Tomamos um banho. Escovamos os dentes. Tomamos o caf da manh. Para irmos ao trabalho: Colocamos uma roupa apropriada. Pegamos um nibus. Chegamos no trabalho.

Ao acordar, tenho um algoritmo para Fazer o caf?

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.

1.2. O que lgica.


Lgica vem do grego clssico logos(), que significa palavra, pensamento, ideia, argumento, relato, razo lgica ou princpio lgico. uma parte da filosofia que estuda o fundamento, a estrutura e as expresses humanas do conhecimento. A lgica foi criada por Aristteles no sculo IV a.C. Para estudar o pensamento humano e distinguir interferncias e argumentos certos e errados. J que o pensamento a manifestao do conhecimento, e que o conhecimento busca a verdade, preciso estabelecer algumas regras para que essa meta possa ser atingida.

1.3. A real lgica do dia a dia.


Sempre que estamos pensando em algo, a lgica nos acompanha. Usamos a lgica quando falamos ou quando escrevemos para por em ordem o nosso pensamento que est sendo expressado. A automao o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por mquinas, sejam estes dispositivos mecnicos, eletrnicos (como os computadores) ou de natureza mista. Para que a automao de uma tarefa seja bem sucedida

Projeto E-jovem - Mdulo II

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.

1.4. Lgica de programao.


A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, assim, ela permite definir a sequ ncia lgica para a criao de aplicativos. Significa o uso correto das leis do pensamento, da ordem da raz o, do processo de raciocnio e simbolizao formais na programao de computadores. Com isso cria-se tcnicas que cooperam para a produo de solues logicamente vlidas e coerentes, que resolvam com qualidade os problemas que se deseja programar. Ento o que lgica? Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo. Usar o raciocnio algo abstrato, intangvel. Os seres humanos tem a capacidade de express-lo atravs de palavras ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma srie de padres(gramtica). Um mesmo raciocnio pode ser expresso em qualquer um dos inmeros, mas continuar representando o mesmo raciocnio, usando apenas outra conveno. Em programao temos vrias linguagens como, java, C, php, Python, delphi dentre muitas outras que existem, porem cada uma delas tem um padro prprio. Essas por sua vez, so muito atreladas a uma grade diversidade de detalhes computacionais, mas com o mesmo raciocnio, seguindo as regras da linguagem, pode ser obtido o mesmo resultado.

Projeto E-jovem - Mdulo II

Logica de Programao

11

1.5. O que um algoritmo


Um algoritmo formalmente uma sequncia finita de passos que levam a execuo de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequ ncia de instrues que busca uma meta especfica. Estas tarefas no podem ser redundantes nem subjetivas na sua definio, logo, devem ser claras e precisas. Os algoritmos servem como modelo para programas, pois sua linguagem intermediria a linguagem humana e as linguagens de programao, sendo ento, uma boa ferramenta na validao da lgica de tarefas a serem automatizadas. Os algoritmos, servem para representar a solu o de qualquer problema, mas no caso do processamento de dados, eles devem seguir as regras b sicas de programao para que sejam compatveis com as linguagens de programao. Por esse motivo os algoritmos so independentes das linguagens. Ao contrrio de uma linguagem de programao, no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de se interpretar e fcil de codificar, ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao a qual for definir. Como exemplos de algoritmos podemos citar os algoritmos das opera es bsicas (adio, multiplicao, diviso e subtrao) de nmeros reais decimais. Outros exemplos seriam os manuais de aparelhos eletrnicos, como um DVD player, aparelhos celulares, televisores, que explicam passo a passo como operar, programar, gravar um evento,listar suas fotos,etc. At mesmo as coisas mais simples, podem ser descritas por sequncias lgicas. Por exemplo: Trocar uma lmpada. Pegar uma escada Colocar a escada no local certo. Pegar a lmpada nova Subir na escada. Retirar a lmpada velha. Colocar a lmpada nova. Descer da escada. Guardar a escada. Colocar a lmpada velha no lixo. Ligar o interruptor para testar. Somar dois nmeros quaisquer. Escreva o primeiro nmero no retngulo A Escreva o segundo nmero no retngulo B Some o nmero do retngulo A com nmero do retngulo B e coloque o resultado no retngulo C

1.6. Porque importante construir um algoritmo.


Saber construir algoritmos fundamental na formao de profissionais de informtica ou computao e como tal, proporcionar condies para essa aprendizagem um constante desafio aos professores e profissionais da rea. Um algortimo tem um papel importante, pois ele determina de que formas podemos resolver um determinado problema, um programa de computador por exemplo, desenvolvido com muita lgica e principalmente um conjunto de algortimos. Outra importncia da construo dos algoritmos que um vez concebida uma soluo algortmica para um problema, esta pode ser traduzida para qualquer linguagem de programa o e ser agregada das funcionalidades disponveis nos diversos ambientes; costumamos denominar esse processo de codificao.

Projeto E-jovem - Mdulo II

Logica de Programao

12

1.7. As maneiras de representarmos um algoritmo.


Existem diversas formas de representao de algoritmos, mas no h um consenso com relao a melhor delas para ser aplicada na resoluo do problema proposto. Algumas formas de representao de algoritmos tratam os problemas apenas em nvel lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma linguagem de programao especfica. Por outro lado existem formas de representao de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as ideias principais do algoritmo, dificultando seu entendimento. Sendo assim temos as seguintes formas: Descrio Narrativa; Fluxograma Convencional; Pseudocdigo,tambm conhecido como Portugus Estruturado ou Portugol.

1.7.1. Descrio Narrativa.


Nesta forma de representao os algoritmos so expressos diretamente em linguagem natural. Como exemplo, observe os algoritmos seguintes:

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.

1.7.2. Fluxograma Convencional.


uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes (instrues,comandos) distintos. Tal propriedade facilita o entendimento das ideias contidas nos algoritmos e justifica sua popularidade. Esta forma aproximadamente intermediria a descrio narrativa e ao pseudocdigo (subitem seguinte), pois menos imprecisa que a primeira e, no entanto, no se preocupa com detalhes de implementao do programa, como o tipo das variveis usadas. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nvel fsico da implementao do algoritmo. Por exemplo, figuras geomtricas diferentes so adotadas para representar operaes de sada de dados realizadas em dispositivos distintos. Existem diversas ferramentas para criao de fluxograma como Jude, Microsoft Visio, Dia(usado no linux), dentre outras, cada uma delas tem uma vantagem em particular.

Projeto E-jovem - Mdulo II

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

Operao de sada de dados

Um fluxograma se resume a um nico smbolo inicial por onde a execuo do algoritmo comea, e um ou mais smbolos finais, que so pontos onde a execuo do algoritmo se encerra. Partindo do smbolo inicial, h sempre um nico caminho orientado a ser seguido, representando a existncia de uma nica sequncia de execuo das instrues. Isto pode ser melhor visualizado pelo fato de que, apesar de vrios caminhos poderem convergir para uma mesma figura do diagrama, h sempre um nico caminho saindo desta. Excees a esta regra so os smbolos finais, dos quais no h nenhum fluxo saindo, e os smbolos de deciso, de onde pode haver mais de um caminho de 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).

Projeto E-jovem - Mdulo II

Logica de Programao

14

1.7.3. Portugus Estruturado ou Pseudocdigo.


Esta forma de representao de algoritmos rica em detalhes,como a definio dos tipos das variveis usadas no algoritmo. Por assemelhar-se bastante a forma em que os programas so escritos, encontra muita aceitao. Na verdade, esta representao suficientemente geral para permitir a traduo de um algoritmo nela representado para uma linguagem de programa o especfica seja praticamente direta. A forma geral da representa o de um algoritmo na forma de pseudocdigo a seguinte:

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.

Projeto E-jovem - Mdulo II

Logica de Programao

15

1.8. EXERCCIOS PROPOSTOS


1)Crie uma sequncia lgica para sacar dinheiro em um caixa eletrnico. 2)Crie uma sequncia lgica para determinar se um numero par ou impar. 3)Crie um fluxograma para as questes um e dois. 4)dado o fluxograma abaixo determine: C = capital,ex: R$ 1.000,00

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.

Projeto E-jovem - Mdulo II

Logica de Programao

16

Captulo 2. Tpicos Preliminares


Objetivos
!resentar "asicamente alguns ti!os #e #a#os a ser im!lementa#os e a#ota#os$ Falar qual sua im!ort%ncia$ Di&erenciar vari'vel e constante$ !resentar coma#os e !rocesso #e entra#a.

2.1. Tipos primitivos.


Todo o trabalho realizado por um computador baseado na manipulao das informaes contidas em sua memria. A grosso modo de expressar-se, estas informaes podem ser classificadas em dois tipos: As instrues, que comandam o funcionamento da mquina e determinam a maneira como devem ser tratados os dados. As instrues so especficas para cada modelo de computador, pois so funes do tipo particular de processador utilizado em sua implementao. Os dados propriamente ditos, que correspondem a poro das informaes a serem processadas pelo computador.

2.1.1.

Tipos de Primitivos de Dados

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.

Projeto E-jovem - Mdulo II

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 :

Veja um exemplo onde atribumos valores as variveis nome e idade:

2.4. Formao de identificadores.


Toda varivel deve possuir um nome para sua identificao dentro de um algoritmo, mas vale ressaltar que no podemos atribuir qualquer nome a ela,e uma vez atribuindo, verificar se ele um identificador vlido ou no. Na figura abaixo observamos um resumo atravs de um grfico que segue resumidamente as regras.

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.

2.5. Declarao de variveis


Toda varivel possui algum contedo, que ser armazenado por ela e manipulado pelo algoritmo. As variveis que sero utilizadas nos algoritmos devem ser declaradas inicialmente. A declara o de uma varivel indica o tipo de dado que ela pode guardar no decorrer da execu o do algoritmo (ou no decorrer da execuo do programa que futuramente ser construdo). Para declararmos uma varivel, temos que criar um identificador para ela, que ser o nome da varivel no algoritmo, e tambm temos que definir o tipo de dado que a vari vel pode armazenar. Faremos a declarao de variveis obedecendo ao seguinte padro:

Projeto E-jovem - Mdulo II

Logica de Programao

1!

Portugol:

[nome do tipo de varivel] [nome da varivel]

: [ nome da varivel] ; : [ nome do tipo de varivel]

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 ;

2.6. Comandos de entrada e sada.


Em um algoritmo preciso representar a troca de informaes que ocorrer entre o mundo da mquina e o nosso mundo, para isso, devemos utilizar comandos de entrada e sa da, sendo que,a nvel de algoritmo esses comandos representam apenas a entrada e a sa da da informao,independe do dispositivo utilizado (teclado, discos, impressora, monitor,...), mas, sabemos que nas linguagens de programao essa independncia no existe, ou seja, nas linguagens de programao temos comandos especficos para cada tipo de unidade de Entrada/Sada.

2.6.1. COMANDO DE ENTRADAS DE DADOS


Para que possamos obter dados do meio exterior para uso do computador (mem ria principal),estes tm de vir atravs dos dispositivos de entrada. Da mesma forma, as informaes que so produzidas, tem de ser levadas ao meio externo (um arquivo, um a impressora, uma tela etc.) atravs de um dispositivo de sada. Para isso, utilizamos dois comandos assim definidos: Comando leia tem a finalidade de l, do meio externo, a prxima informao disponvel para leitura e armazena na(s) varivel(eis) discriminada(s) aps o comando, entre parnteses. Mais tarde aprenderemos como especificar a leitura de um dado que est armazenado em um arquivo e de que arquivo est sendo lido o dado.

Exemplo: leia (v) O valor da varivel (v) dado por um dispositivo de entrada.

Projeto E-jovem - Mdulo II

Logica de Programao

19

2.6.2. COMANDO DE SAIDAS DE DADOS


Comando escreva ou escreval: Imprime (na tela ou na impressora) o contedo da(s) varivel(eis) especificada(s) aps o comando, entre parnteses. No ser preocupao nossa a formatao de relatrios, mas o comando permite a impresso de texto (entre ), se for necessria para clareza ou especificao do que est sendo impresso.

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.

em visualg: numero : inteiro portugol: inteiro numero;

Tambm podemos concatenar valores no comando de sada. Isso varia muito de uma linguagem para outra, por exemplo:

ao executar(tecla de atalho F9) isso imprime na tela resultado seguinte:

Esse exemplo ao lado utilizamos os a subtrao de dois nmeros e logo aps imprimimos o resultado na tela.

Projeto E-jovem - Mdulo II

Logica de Programao

20

O resultado da sada desse programa a seguinte:

Exemplo com o comando leia e escreva: cdigo-fonte. sada da execuo:

utilizamos o escreval quando queremos uma quebra de linha, troque por escreva e perceba o que acontece:

2.7. Expresses aritmticas.


Quando construmos algoritmos comum trabalharmos com expresses matemticas para a resoluo de alguns problemas. As expresses matemticas podem fazer uso de operadores aritmticos e relacionais. As variveis (ou constantes) manipuladas pelos operadores so chamadas de operandos. Observe o diagrama:

Exemplos: A+B (A e B so os operados e + o operador da e!presso". ((# $ A" + %" (B&A"

((A//2)*B) 15

Projeto E-jovem - Mdulo II

Logica de Programao

21

2.8. Operadores aritmticos


Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes bsicas da matemtica.

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.

algortimo que calcula o quociente e resto de uma diviso:

Sada da execuo.

Projeto E-jovem - Mdulo II

Logica de Programao

22

2.9. Expresses lgicas


As expresses lgicas sempre retornaram True (Verdadeiro) e False (Falso). Para se montar expresses lgicas utilizamos de operadores relacionais e operadores lgicos. Exemplo: Visualg: a '( verdadeiro b '( )also Portugol: a '( verdadeiro; b '( )also;

2.10. Operadores relacionais.


So utilizados para relacionar variveis ou expresses, resultando num valor lgico (Verdadeiro ou Falso), sendo eles mostrados na tabela abaixo:

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

Projeto E-jovem - Mdulo II

Logica de Programao

23

2.11. Operadores lgicos.


So utilizados para avaliar expresses lgicas. Estes operadores servem para avaliar expresses que resultam em valores lgico sendo verdadeiro ou falso:

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

Projeto E-jovem - Mdulo II

Logica de Programao

24

Exemplo: c#igo,&onte.

-a.#a #a execuo.

2.12. Comando de atribuio.


O operador de atribuio utilizado para atribuir valores aos identificadores(vari veis e constantes) e na montagem de expresses(aritmticas,lgicas e literal). Com isso podemos definir sempre que um tipo de dado deve ser compat vel com o tipo da varivel. A figura abaixo mostra em diagrama a sua sintaxe:

O valor da expresso atribudo ao identificador (varivel).

5 '( #

6 '( %(!

7 '( (8$(6( 9""

: '( (;$((:+#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}

2.12.1. PRIORIDADE DE OPERADORES:


Durante a execuo de uma expresso que envolve vrios operadores, necessrio a existncia de prioridades, caso contrrio poderemos obter valores que no representam o resultado esperado. A maioria das linguagens de programao utiliza as seguintes prioridades de operadores: 1. 2. 3. 4. 5. Efetuar operaes embutidas em parnteses "mais internos". Efetuar Funes. Efetuar multiplicao e/ou diviso. Efetuar adio e/ou subtrao. Operadores Relacionais.

6. Operadores Lgicos
Projeto E-jovem - Mdulo II

Logica de Programao

25

2.13. EXERCCIOS PROPOSTOS


1)Como podemos definir o conceito de tipos primitivos de dados. 2)Cite alguns tipos primitivos e der exemplos. 3)Qual a diferena entre constantes e variveis. 4)Como podemos definir a formao de um identificador vlido? crie cinco identificadores no Visualg (o nome devera ser uma nica letra e aps isso os tipos). 5)Crie o seguinte cdigo no Visualg e diga qual o resultado final.

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

Projeto E-jovem - Mdulo II

Logica de Programao

26

Captulo 3. Estruturas de Controle


Objetivos
Mostrar conceitos e estrutura sequencial de fluxo, em etapas lgicas, onde pode-se assimilar suas variaes, combinaes e equivalncias; Apresentar estruturas de repetio e sua aplicao. As estrutura de controle de dado so responsveis pela manipulao dos dados conforme seja necessrio na realizao de um processamento. Cada instruo programvel possui uma lgica de operao e estabelece uma sequencia de aes a serem efetuadas ou verificadas. Quando estivermos criando os algoritmos sero necessrias as manipulaes de dados respeitando a sequencia lgica de cada comando, buscando sempre alcanar os objetivos almejados pelos algoritmos. Basicamente as estruturas de controle de dados so de trs tipos principais: -Sequencial: conjunto de comandos separados por ponto e vrgula (;) que so executados em uma sequncia linear de cima para baixo. -Seleo:a partir de um teste condicional, uma instru o, ou um conjunto de instrues, podem ser executados ou no, dependendo exatamente do resultado do teste efetuado. -Repetio:uma instruo ou o conjunto de instrues que ser executado repetidamente, de acordo com o resultado de um teste condicional.

3.1. Estrutura sequencial.


A estrutura sequencial a mais convencional entre todas as possveis, pois ela consiste na execuo de uma instruo de cada vez, onde o encerramento da primeira instruo permite o acionamento da instruo seguinte, respeitando a ordem de cima para baixo. Observe o exemplo a seguir: Declaraes real N/0 $ Inicio escreva123n&orma a nota #a !rova4 25$ leia1N/0 5$ escreva12Nota 62* N/0 5$ Fim O mesmo exemplo no Visualg fica:

Projeto E-jovem - Mdulo II

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.

3.2. Estrutura de seleo.


Este tipo de estrutura permitir a escolha de um caminho sequencial a ser executado. Primeiramente, ela efetua um teste condicional que definir o caminho de execuo do algoritmo baseado no resultado deste teste. Os testes condicionais so baseados na lgica convencional, podem obter o resultado de verdadeiro ou falso. Estes testes podem ser efetuados sobre opera es relacionais simples ou com expresses lgicas complexas que resultem em um valor lgico (verdadeiro ou falso). As estruturas de seleo podem ser classificadas de 4 formas diferentes, sendo esta classifica o baseada na organizao lgica existente em cada situao. Esta classificao se resume em: > > > > Seleo simples. Seleo composta. Seleo encadeada. Seleo de mltipla escolha.

3.2.1. Seleo Simples


Neste tipo de seleo proposto um teste condicional, que sendo verdadeiro possibilitar a execuo de uma instruo ou um conjunto de instrues (bloco condicional) especfica. Portugus estruturado: Acompanhe a seguir as regras de representao em algoritmo para a tcnica descritiva do portugus estruturado. Sintaxe: : se 17con#io85 ento coman#o 1$ coman#o 2$ 4 4 coman#o n$ fim se;

Projeto E-jovem - Mdulo II

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.

Acompanhe a seguir a representao algoritmo na tcnica grfica do fluxograma:

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.

Projeto E-jovem - Mdulo II

Logica de Programao

29

3.2.2. Seleo Composta


A seleo composta sempre executar um bloco condicional, pois se o resultado do teste condicional for verdadeiro um conjunto de instrues ou somente uma ser executada e se o resultado no for verdadeiro um outro conjunto de instrues, ou somente uma, ser executada tambm. Este tipo de seleo sempre identificar um nico caminho de instrues a ser percorrido, dependendo sempre do resultado da veracidade do testes condicional executado. Sintaxe: : se ('condio/" ent&o comando @; : comando n; sen&o comando %; : comando m; 'im se;

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.

Projeto E-jovem - Mdulo II

Logica de Programao

30

Veja como o fluxograma que representa o cdigo anterior abaixo:

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.

3.2.3. Seleo encadeada


A instruo de seleo (SE) pode ser encadeada uma dentro da outra, seja no bloco verdadeiro (ento) ou falso (seno). Todas as instrues programveis podem estar dentro de qualquer um dos blocos da instruo de seleo. O encadeamento destas instrues tambm chamada de aninhamento de instrues de seleo ou condicional vrias, no existindo um limite de quantos testes condicionais podem estar dentro de outro. Quem estabelece este tipo de limite a soluo lgica proposta no algoritmo para alcanar uma soluo eficiente. Sintaxe: : se ('condioB@/" ent&o 'bloco de comandos @/; sen&o se ('condioB#/" ent&o 'bloco de comandos #/; sen&o se ('condioB8/" ent&o : 'im se; 'im se; 'im se;

Projeto E-jovem - Mdulo II

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

3.3. Seleo de mltipla escolha.


Uma outra instruo condicional, muito utilizada nas avaliaes de igualdade, a seleo de mltipla escolha. Ela verifica somente a igualdade do valor avaliado, onde sua veracidade resultar na execuo de um bloco, ou de uma nica instruo especfica. Sintaxe: : escolDa (5" caso 'v@/: comandos; caso 'v#/: comandos; caso 'v8/: comandos; caso contrario: comandos; )im escolDa; <v1>, <v2>, <v3> so supostos valores a serem relacionados por meio da opera o de igualdade. Exemplo: =eclara2es inteiro estao; <nicio escreva(?=igite o per4odo trimestral do ano em Fue estamos: ?"; leia(estao"; escolDa (estao" G instruo de mHltipla escolDa sobre estao I

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

Projeto E-jovem - Mdulo II

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.

3.4. Estruturas de repetio.


O processamento de valores pode ocorrer diversas vezes sobre uma mesma l gica, porm os dados a serem manipulados podem ser diferentes, como no calculo da tabuada de um n mero. Este calculo realiza a mesma operao de multiplicao sobre os valores numricos inteiros sequencias, normalmente iniciados em um (1) e seguindo at o nmero dez (10) quando estamos aprendendo a calcular e memorizar o resultado obtido nesta operao. Sendo assim, Vamos criar um algoritmo que leia um nmero positivo e apresente o resultado de sua tabuada de um a dez (1 10). Observe o exemplo proposto: Exemplo: Supondo que o valor desejado seja 2 ento: 2x1=2 2x2=4 2x3=6 2x4=8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20 Soluo (algoritmo descritivo):

Projeto E-jovem - Mdulo II

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.

3.5. Repetio com teste no incio e no final. 3.5.1. TESTE INCIO


Com o intuito de controlarmos as manipulaes necessrios sobre os dados armazenados, tambm podemos utilizar as instrues de repetio, que permitem a repetio de uma operao quantas vezes forem necessrias, baseando esta repetio no resultado de um teste condicional. Para isso temos a estrutura enquanto <condio> faa. A instruo de repetio ENQUANTO ... FAA permite a execuo do conjunto de comandos pertencentes ao seu bloco de repetio, sendo eles executados a partir de um teste condicional verdadeiro. Enquanto este teste permanecer verdadeiro a repetio executada continuamente, sendo encerrada somente quando a condio for falsa. Sintaxe: : enFuanto (' condio /" )aa 'bloco de repetio/; G com um ou vJrios comandos I )im enFuanto; Exemplo (descritivo): Declaraes real nota, media; inteiro aux; Incio aux 1; media 0; enquanto aux < 50 faca escreva("Informe sua nota: "); leia(nota); media media + nota; aux aux + 1; fim enquanto escreva("Mdia da turma = ",media /50); Fim No Visualg:

Projeto E-jovem - Mdulo II

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.

3.5.2. TESTE FINAL


sua lgica de execuo.

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.

(intaxe: : repita 'bloco de repetio/;G com um ou vJrios comandos I at ('condio/"; :

Projeto E-jovem - Mdulo II

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.

Projeto E-jovem - Mdulo II

Logica de Programao

3.6. Repetio com varivel de controle.


Na estrutura de repetio vista at agora, ocorrem casos que fica difcil determinar o nmeros de vezes que um bloco vai executar. Ou seja,ser executado enquanto a condio for satisfatria. A instruo de repetio PARA ... FAA executa um conjunto de instrues por uma quantidade de vezes bem definidas (conhecidas). Sintaxe: : para 5 de i at* ) passo p 'a"a 'comandos/; 'im para; on#e4 X uma varivel inteira que auxiliar na contagem da repetio iniciada com o valor i at o valor final de f ,p o valor do incremento dado a varivel X. O problema da tabuada, apresentado anteriormente, pode ser solucionado com o algoritmo que usa eficientemente a instruo de repetio para ... faa. Soluo da tabuada (descritiva): =eclara2es inteiro valor contador; <n4cio escreva (?<n)orme o valor desejado: ?"; leia(valor"; para contador de @ at @C passo @ )aa escreval(valor ? ! ? contador ? - ? ( valor $ contador" "; )im para; Eim

No Visualg:

Projeto E-jovem - Mdulo II

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:

Exerccio rpido: 1) Faa um algoritmo que receba 10

nmeros e imprima somente os 5 primeiros. 2) Faa um algoritmo que imprima somente nmeros pares de 2 at 20.

Projeto E-jovem - Mdulo II

Logica de Programao

39

3.7. Comparao entre estruturas de repetio.


As estruturas de repetio possuem uma forma diferenciada para controlar a quantidade de repeties a serem executadas. Estes controles podem ser genericamente classificados em automtico ou controlado pelo usurio do programa.

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:

Projeto E-jovem - Mdulo II

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.

Projeto E-jovem - Mdulo II

Logica de Programao

41

3.8. EXERCCIOS PROPOSTOS


1)Quais os trs tipos de estruturas de dados, e diga qual a principal diferena entre elas. 2) Quais as estruturas de seleo,defina cada uma delas. 3) Usando estrutura de seleo crie um algoritmo no Visualg onde o usurio digite 4 notas de um aluno e mostre no final a mdia dizendo ao usurio se ele foi aprovado ou reprovado. 4) Usando escolha crie um algoritmo onde o usurio digite um numero de 1 a 7,aps isso imprima a seguinte frase,ex : a opo escolhida foi a de nmero 5. 5) Crie um fluxograma para a questo 4 de acordo com a forma resolvida. 6) Defina qual a principal finalidade de uma estrutura de repetio. 7) Crie um algoritmo no visual que receba dois nmeros, o primeiro devera ser digitado por uma pessoa, o outro por outra pessoa,o intuito do algortimo e verificar se o segundo usurio chutou o numero prximo do primeiro ou no, caso ele acerte o chute imprima na tela(use a estrutura se para comparar). 8) usando estrutura de repetio enquanto,crie um algortimo no Visualg que conte de 1 at 20. 9) Agora com os mesmos cdigos da questo 9, faa um algortimo que, ao chegar em 20 comece a contar de novo(acrescente a estrutura se para reinicializar a varivel) . 10)Crie um algortimo onde o usurio entre com o tempo em minutos,aps isso ele imprima na tela uma contagem regressiva(use qualquer estrutura de repetio). 11)Faa um algortimo onde o usurio entre com numero e imprima a tabuada daquele numero(use qualquer estrutura de repetio). 12) Dada a expresso H= 1/1+3/2+5/3+7/4+.....+99/50,crie um algoritmo que mostre o valor final de H. 13) Crie um algoritmo que o usurio entre com um numero e ele diga se par ou impar(use qualquer estrutura de comparao).. 14) Crie um programa que mostre toda a tabuada de 1 at 9 (use qualquer estrutura de repetio).

Projeto E-jovem - Mdulo II

Logica de Programao

42

Captulo 4. Estruturas de Dados


Objetivos
Mostrar a manipulao de vetores e matrizes em sua aplicao; Mostrar aplicabilidade dessas estruturas visando somente o conceito de registros(uma vez que no existe registos nas verses atuais do Visualg).

4.1. O que estruturas de dados.


So organizaes de dados construdas a partir da composio dos tipos primitivos j existentes (caractere, inteiro, real, lgico). Esses novos tipos de dados podem armazenar um conjunto de dados conhecidos como variveis compostas. As variveis que armazenam esses tipos de dados podem ser classificadas em: variveis compostas homogneas e variveis compostas heterogneas. As variveis compostas so estruturas de dados (armazenam um conjunto de dados) homog neos ou heterogneas. Esses dados podem ser armazenados em dois tipos de variveis: as variveis unidimensionais (conhecidas como vetores) e as variveis multidimensionais (conhecidas como matriz). O diagrama abaixo mostra as regras sintticas, supondo que o valor a ser atribudo um conjunto de informaes:

Lembrando que estas regras podem mudar de acordo com a linguagem. Veja a forma estruturada utilizada no Visualg. Declarao:

Inicializao:

4.2. Variveis compostas homogneas.


As estruturas de dados homogneas permitem agrupar diversas informaes dentro de uma mesma varivel. Este agrupamento ocorrer obedecendo sempre ao mesmo tipo de dado, e por esta razo que estas estruturas so chamadas homogneas. A utilizao deste tipo de estrutura de dados recebe diversos nomes, como: variveis indexadas, variveis compostas, variveis subscritas, arranjos, vetores, matrizes, tabelas em memria ou arrays. Os nomes mais usados para essas estruturas homogneas so: matrizes (genrico) e vetores (matriz de uma linha e vrias colunas). Exemplos: Alcateia (vrios lobos), conjunto de nmeros inteiros, lista de contatos, time de futebol, o vetor notas, que armazena o conjunto de notas da primeira e outros.
Projeto E-jovem - Mdulo II

Logica de Programao

43

4.3. Variveis compostas unidimensionais.


So variveis que necessitam de apenas um ndice para individualizar um elemento do conjunto que so chamado de vetores. Os vetores so usados nos casos em que um conjunto de dados do mesmo tipo precisa ser armazenado em uma mesma estrutura. Exemplo: 1. Guardar 20 nmeros diferentes em um mesmo tipo de varivel. 2. Lista de palavras em uma mesmo tipo de varivel. 3. 50 Mdias de alunos em um mesmo tipo de varivel. Diagrama:

Diagrama da estrutura no Visualg:

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.

Projeto E-jovem - Mdulo II

Logica de Programao

44

4.4. Declarao e manipulao(unidimensional).


Ao imaginar o elevador de um prdio sabemos que este capaz de acessar qualquer um de seus andares. Entretanto, no basta saber que andar desejamos atingir se no soubermos o nome do edifcio, pois qualquer um possui andares. O que precisamos de antem o saber o nome do edifcio e s ento nos preocuparmos para qual daqueles andares queremos ir. O mesmo acontece com os vetores, visto que so compostos por diversas variveis e, como podem existir muitos vetores, tornase necessrio determinar qual vetor contm o dado desejado e depois especificar em qual posi o este se encontra. O nome do vetor determinado por meio do identificador que foi utilizado na definio de variveis, e a posio, por meio da constante, expresso aritmtica ou varivel que estiver dentro dos colchetes, tambm denominada ndice. Aps isolar um nico elemento do vetor, poderemos manipul-lo atravs de qualquer operao de entrada, sada ou atribuio. A sintaxe do comando de definio de vetores a seguinte: Oortugol:

<nome do tipo de varivel> : [ nome da varivel] <expresso>;

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

4.4.1. Leitura de Dados de Uma Matriz do Tipo Vetor


A leitura de um vetor feita passo a passo, ou seja, um de seus componentes por vez usando a mesma sintaxe da instruo primitiva da entrada de dados, onde alm do nome da varivel, deve ser explicitada a posio do componente lido. Sintaxe:

leia0.nome<#a<vari'vel/ [ ..n#ice/ ]1;


Veja uma figura onde representamos um vetor de 10 posi es onde cada uma guarda uma nota diferente. Para recuperarmos o valor guardado, devemos fazer uma chamada do nome do vetor passando pra ele qual a posio queremos. Vale lembrar que se passarmos um ndice invlido ocorrer um erro no algoritmo. notas : vetorR@..@CS de real escreva0notasRTS1

Projeto E-jovem - Mdulo II

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:

4.5. Variveis compostas multidimensionais.


So as variveis que necessitam mais de um ndice para a individualizao de seus elementos. As variveis multidimensionais podem ser bidimensionais, onde o primeiro elemento representa a linha e o segundo a coluna. Podem ainda ser tridimensionais, onde o elemento representa a pgina (face). Diagrama:

Diagrama da estrutura no Visualg:

Projeto E-jovem - Mdulo II

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.

4.6. Declarao e manipulao(multidimensionais ).


Para declarar uma matriz multidimensional temos que definir quantas dimens es a mesma vai possuir. Cada matriz vai ser composta por dois ou mais vetores. Sintaxe da declarao: tipo <=>PU<E<MA=*N 2 matri+ [3$4 3%45 3$6 3%65 Onde: LI1..LF1, LI2..LF2, ..., LIn..LFn : So os limites dos intervalos de variao dos ndices da varivel, onde cada par de limites est associado a um ndice; <tipo> : representa qualquer um dos tipos bsicos ou tipo anteriormente definido; lista de variveis : lista de variveis (separadas por vrgula) que tero o mesmo tipo denotado por IDENTIFICADOR. Exemplo: tipo 3ALA - matri7 [4 85 4 8] de inteiro; tipo L - matri7 [4 95 4 :5 4 8] de inteiro; No Visualg: notas : vetor [4 654 :] de inteiro alunos : vetor[4 954 6;] de caracter Veja um Exemplo onde temos o seguinte cdigo: 5 3$n 3%n] de .tipo/;

Projeto E-jovem - Mdulo II

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.

4.7. Variveis compostas heterogneas.


J sabemos que um conjunto homogneo de dados composto de variveis do mesmo tipo primitivo,porm se tivssemos um conjunto em que os elementos no so do mesmo tipo, teramos ento um conjunto heterogneo de dados. Considerando que os andares de um prdio so divididos em apartamentos temos uma estrutura multidimensional. Para localizarmos um indivduo 4 neste prdio precisaremos de seu nome, o andar e o nmero do apartamento. Considerando uma estrutura bidimensional (dois ndices: andar e apartamento),o primeiro ndice indica a linha e o segundo, a coluna.

O elemento hachurado referenciado por MSALA [2, 3].

4.8. Registros (declarao e manipulao).


Uma das principais estruturas de dados o registro. Para exemplificar, imagine uma passagem de nibus, que formada por um conjunto de dados logicamente relacionados, por m de tipos diferentes, tais como nmero da passagem (inteiro), origem e destino (caractere), data (caractere), horrio (caractere), poltrona (inteiro), distncia (real), que so subdivises do registro (elementos do conjunto), tambm chamadas de campos. Logo, um registro composto por campos que so partes que especificam cada um dos dados. Observe o seguinte formulrio abaixo:

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

Projeto E-jovem - Mdulo II

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.

4.9. Registros de conjuntos (declarao e manipulao).


Para usarmos um registro precisamos primeiramente definir em detalhes como constitudo o tipo construdo, especificando todos os campos e depois, declarar uma ou mais variveis, associando os identificadores de variveis ao identificador do tipo registro. Nas estruturas composta homogneas (vetores e matrizes ) utilizamos tipos de dados primitivos como sendo os elementos dessas estruturas. Agora utilizaremos como componentes dessa estrutura n o apenas um tipo primitivo mas tambm os tipos construdos, neste caso os registros. Sintaxe da declarao: tipo <=>PU<E<MA=*N - registro tipo@ : campo@; tipo# : campo#; . . . . tipon :campon; 'imregistro; <P=>PU<E<MA=*N : lista de variJveis;

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;

Projeto E-jovem - Mdulo II

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

4.10. EXERCCIOS PROPOSTOS


1) Diga com suas palavras qual a principal finalidade de uma estrutura de dados. 2) Qual a diferena de variveis compostas homogneas para variveis compostas heterogneas. 3) Qual a diferena de variveis compostas unidimensionais para variveis compostas multidimensionais. 4) Como podemos definir o conceito de registro. 5) Crie um algoritmos que leia um vetor com 20 nmeros de 1...20 e escreva na tela cada um deles, use escreval (escrever com quebra de linha). 6) Crie um algoritmo que leia 30 nmeros de 1... 30 e gere um segundo vetor para receber os mesmos,porm de maneira invertida,mostre na tela os dois vetores. 7) Crie um algortimo que leia 10 nmeros digitados pelo usurio e diga qual foi o maior numero, use dois vetores de mesmo tipo. 8) Crie um algoritmo que tenha uma matriz 2 x 3 com base nisso fa a: a) O preenchimento de cada linha digitada pelo usurio. b) A soma das 2 linhas separadamente. c) A soma das 3 colunas separadamente. d) A soma total da matriz. 10) Observe o seguinte registro:
Projeto E-jovem - Mdulo II

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

Projeto E-jovem - Mdulo II

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

Captulo 5. Introduo a PHP


Objetivos
Fazer uma apresentao da linguagem PHP e um pouco da historia; Mostrar quais requisitos necessrios para instalao e configurao de um servidor web para PHP e banco de dados MYSQL.

5.1. O que PHP


PHP significa: Hypertext Preprocessor. O produto foi originalmente chamado de Personal Home Page Tools, mas como se expandiu em escopo um nome novo e mais apropriado foi escolhido por votao da comunidade. Voc pode utilizar qualquer extenso que desejar para designar um arquivo PHP , mas os recomendados foram *.php , *.phtml. O PHP est atualmente na verso 5.3.3, chamado de PHP5 ou, simplesmente de PHP , mas os seus desenvolvedores est o trabalhando para lanamento da verso 6, que causa uma preocupao para os programadores do mundo todo, uma vez que, algumas funcionalidades antigas deixam de funcionar quando passaram da vers o 4 para a 5.

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:

Projeto E-jovem - Mdulo II

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.

5.1.1. Um pouco da Histria do PHP .


Rasmus Lerdorf, engenheiro de software, membro da equipe Apache o criador e a fora motriz original por trs do PHP . A primeira parte do PHP foi desenvolvida para utiliza o pessoal no final de 1994. Tratava-se de um wrapper de PerlCGI que o auxiliava a monitorar as pessoas que acessavam o seu site pessoal. No ano seguinte, ele montou um pacote chamado de Personal Home Page Tools (tambm conhecido como PHP Construction Kit) em resposta demanda de usurios que por acaso ou por relatos falados depararam-se com o seu trabalho. A vers o 2 foi logo lanada sob o ttulo de PHP/FI e inclua o Form Interpreter, uma ferramenta para analisar sintaticamente consultas de SQL. Em meados de 1997, o PHP estava sendo utilizado mundialmente em aproximadamente 50.000 sites. Obviamente estava se tornando muito grande para uma nica pessoa administrar, mesmo para algum concentrado e cheio de energia como Rasmus. Agora uma pequena equipe central de desenvolvimento mantinha o projeto sobre o modelo de junta benevolente do cdigo-fonte aberto, com contribuies de desenvolvedores e usurios em todo o mundo. Zeev Suraski e Andi Gutmans, dois programadores israelenses que desenvolveram os analisadores de sintaxe PHP3 e PHP4, tambm generalizaram e estenderam seus trabalhos sob a rubrica de Zend.com (Zeev, Andi, Zend, entendeu?). O quarto trimestre de 1998 iniciou um perodo de crescimento explosivo para o PHP , quando todas as tecnologias de cdigo-fonte aberto ganharam uma publicidade intensa. Em outubro de 1998, de acordo com a melhor suposio, mais de 100.000 domnios nicos utilizavam PHP de alguma maneira. Um ano depois, o PHP quebrou a marca de um milh o de domnios. Enquanto escrevo esta apostila, o nmero explodiu para cerca de dois milhes de domnios.

5.2. Instalao do Servidor PHP


As requisies so feita de forma cliente servidor, onde um determinado cliente faz uma requisio a um servidor, ele por sua vez recebe a requisio e faz todo o processo em diferentes camadas, retornando somente o que o cliente(browser) solicitou. Para o funcionamento do PHP necessrio a instalao de um servio dentro de um sistema operacional, esse servio e proporcionado atravs do Apache que compatvel com o protocolo HTTP . Alm disso preciso instalar a verso do PHP5 para um funcionamento mais compatvel com as maioria das pginas PHP . Outro servio o banco de dados, onde futuramente estaremos trabalhando com ele. O banco de dados que usaremos o MYSQL. Normalmente essa instalao chamada de LAMP(Linux, Apache, MYSQL, PHP) voltada para sistemas operacionais Linux, como tambm WAMP(Windows, Apache, MYSQL, PHP) voltada para sistemas operacionais Windows. Ser visto a instalao do LAMP uma vez que esse material e
Projeto E-jovem - Mdulo II

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.

5.2.1. Instalao Apache.


O apache um dos principais aplicativo para o funcionamento de programas web feito em PHP , existe duas grandes verses, o apache 2.x e o Apache 1.3, que apesar de antigo ainda muito utilizado em servidores. O Apache 2 trouxe muitas vantagens, sobretudo do ponto de vista do desempenho alm de oferecer novos mdulos e mais opes de segurana. Mas sua adoo foi retardada nos primeiros anos por um detalhe muito simples: o fato de ele ser incompat vel com os mdulos compilados para o Apache 1.3. Como os mdulos so a alma do servidor web, muitos administradores ficavam amarrados ao Apache 1.3 devido falta de disponibilidade de alguns mdulos especficos para o Apache 2. Iremos trabalhar com o Apache2 em sua verso para Linux, o procedimento de instalao simples pois precisamos apenas de uma conexo com a internet e alguns comando, outra forma de instalao e baixando o mesmo no site: http://httpd.apache.org/ e instalando de forma manual. Para instalarmos precisamos abrir o konsole atualizar o nosso repositrio do Linux: Digite sudo su,ou sudo e o nome do usurio root para ter permisses dentro do Konsole, logo aps como o computador em rede com a internet atualize os repositrios:

#apt-get update
Apartir de agora podemos instalar o apache:

#apt-get install apache2


Espere at a concluso de toda instalao. Por padro o apache automaticamente inicializa, podendo ser utilizado aps isso. Digite no http://127.0.0.1/ ou http://localhost/ no browser, dever aparecer a seguinte tela:

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/

Projeto E-jovem - Mdulo II

P"P e M#$%L

56

5.2.2. Instalao Php5.


Para o funcionamento dos programas em PHP precisamos de algumas depend ncias, onde funcionalidades, funes, classes e suporte a XML ento embutidas. Por exemplo, se voc quiser utilizar orientao a objeto ou simplesmente fazer uma conexo com o banco de dados, necessrio a instalao do PHP5, onde algumas bibliotecas sero instaladas para dar suporte aos programas em PHP . Aps instalar do apache e com o konsole logado como root podemos instalar o PHP5 com o seguinte comando: #apt-get install php5

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L

5.2.3. Instalao MYSQL.


Agora veremos a instalao do banco de dados MYSQL, onde trabalharemos com essa base de dados nos captulos finais dessa apostila. Logando no konsole como root digite o seguinte comando: #apt-get install mysql-server Obs.: em certo momento aparecer uma tela pedindo a senha de root do banco de dados, digite a senha que o seu instrutor definir, logo ap s confirme a senha digitando-a novamente. Para testarmos o nosso banco de dado utilize o seguinte comando: #mysql -u root -p -u pede o usurio no caso o usurio do banco o root. -p pede a senha logo em seguida. Se tudo sair como planejado voc devera logar no banco de dados: mysql> para sair digite exit e der um enter:

5.2.4. Instalao phpMyAdmin.


Instalaremos agora uma ferramenta para gerenciamento do banco de dados MYSQL. O phpMyAdmin uma ferramenta feita em PHP , onde podemos executar de forma visual muitos dos comandos usados no MYSQL. Pode-se tambem configurar o prprio SGBD(Sistema de gerenciamento de banco de dados). O primeiro passo para instalao estar logado no konsole como usurio root(sudo su, ou sudo e o nome do usurio root). Use o seguinte comando para instalar o phpMyAdmin: #apt-get install phpmyadmin Logo aps aparecer uma tela pedindo a senha do banco de dados, justamente aquela que foi digitada quando estava instalando o MYSQL. Espere a instalao concluir. Agora precisamos copiar o phpMyAdmin pra dentro da pasta var/www com o seguinte comando: cp -r /usr/share/phpmyadmin/ /var/www/ -r copia o diretrios recursivamente(substituindo caso j exista). Para acessar essa ferramenta digite no Browser: http://localhost/phpmyadmin, digite login: root, e a senha do banco de dados que foi definida na instalao do MYSQL, se tudo estiver correto temos a seguinte tela como mostra ao lado:

Projeto E-jovem - Mdulo II

P"P e M#$%L

5!

5.3. Caractersticas de um programa PHP .


Assim como qualquer linguagem de programao, o PHP tem algumas caractersticas importantes, ao criamos um arquivo PHP podemos usar a seguinte extenso: *.php Arquivo PHP contendo um programa. *.class.php Arquivo PHP contendo uma classe(veremos o conceito de classe mais adiante). *.ini.php Arquivo PHP a ser includo, pode incluir constantes ou configuraes. Outras extenses podem ser encontradas principalmente em programas antigos: *.php3 Arquivo PHP contendo um programa PHP verso 3. *.php4 Arquivo PHP contendo um programa PHP verso 4. *.phtml Arquivo PHP contendo um programa PHP e HTML na mesma pgina. Vale ressaltar que o simbolo asterisco (*) simboliza qualquer nome a ser atribudo ao arquivo PHP . Alem disso o cdigo de um programa escrito em PHP deve estar contido entre os seguintes delimitadores:

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

5.3.1. COMANDOS DE SADA(OUTPUT)


So comandos utilizados para gerar uma sada em tela(output). Se o programa PHP for executado via servidor de pginas web(Apache ou IIS), a sada ser exibida na prpria pgina HTML gerada no Browser(navegador), assim ser mostrado de acordo com o contedo existente na sada, por exemplo, se tivermos o seguinte: <h2> Hello Word! <h2>, ser mostrado no navegador apenas a mensagem Hello Word! em um tamanho maior, pois trata-se de um c digo HTML dentro de comandos PHP . Podemos ento usar os seguintes comandos para gerar comandos de sada: echo e print. echo um comando que imprime uma ou mais variveis ou textos, onde os mesmos so colocados em aspas simples ' ' ou duplas . Sintaxe: echo 'a','b','c'; resultado: abc print uma funo que imprime uma String(texto) no console. Exemplo: print( ' apostila de PHP ' ); resultado: apostila de PHP Observe um exemplo com o uso de echo e print: Cdigo: Sada no Browser:

Projeto E-jovem - Mdulo II

P"P e M#$%L

60

5.4. EXERCCIOS PROPOSTOS


1) Como podemos definir PHP e qual a sua relao com HTML. 2) Descreva um exemplo estrutural relacionando tag's HTML e delimitaes PHP . 3) Quais aplicativos bsicos podemos instalar para criarmos um servidor de pginas em PHP . 4) Em relao ao apache, qual a sua principal finalidade. 5) Quais as principais extenses de arquivos PHP e diga a diferena entre elas. 6) Crie dois exemplos de cdigo PHP usando seus delimitadores. 7) Qual as finalidades de usar comentrios dentro de um cdigo-fonte. 8) Cite os principais comandos de sada usados em PHP . 9) Qual a diferena entre echo e print. 10) Observe o seguinte cdigo e diga qual o item correto: <?php //pgina web. echo '<h1>Ol, essa sua primeira pgina!<h1>'; echo '<h2>Responda!</h2>' print 'O que PHP?'; print 'Qual sua finalidade?'; echo '<h4>Resposta: item a!</h4>'; ?> I - Esse cdigo pode ser interpretado pelo apache normalmente. II - As tag's HTML so interpretadas pelo servidor. III - Esse cdigo possui erros. IV - As tag's so interpretada pelo navegador do cliente. a) I,II,IV esto corretas. b) somente a I est correta. c) III, IV esto correta. d) somente IV est correta. e) I e IV esto corretas. Prtico: 11) Crie um arquivo PHP dentro da pasta www com o nome index.php, ap s isso pegue o cdigo anterior e adicione a esse arquivo, defina quais textos so visualizadas em seu navegador. Caso exista erros,faa uma correo. 12) Crie dois arquivos diferentes, um com nome index.php, outro com o nome teste.php, ap s isso inclua o arquivo teste.php dentro do arquivo index.php, ambos arquivos dever ter no seu cdigo impresso mensagens diferentes utilize o comando print.

Projeto E-jovem - Mdulo II

P"P e M#$%L

61

Captulo 6. Atribuies em PHP


Objetivos
Mostrar a definio de variveis e os seus tipos; Mostrar como pode-se atribuir um valor a ela, seu uso e aplicao em PHP; Mostrar o definio de constantes e sua importncia.

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:

Projeto E-jovem - Mdulo II

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.

6.2. Tipos de Variveis


Algumas linguagens de programao tem suas variveis fortemente tipadas, diferentemente disso o PHP tem uma grande flexibilidade na hora de operar com vari veis. De fato, quando definimos uma varivel dando-lhe um valor, o computador atribui-lhe um tipo. Isso permite que o programador no se preocupe muito na definio de tipos de variveis, uma vez que isso feita de forma automtica. Porm deve ter cuidado com as atribuies de valores, evitando erros na hora de iniciar uma varivel em PHP .

6.2.1. Tipo booleano.


Um booleano expressa um valor lgico que pode ser verdadeiro ou falso. Para especificar um valor booleano, utilize a palavra-chave TRUE para verdadeiro ou FALSE para falso. No exemplo a seguir, declaramos uma varivel booleana $exibir_nome, cujo contedo TRUE(verdadeiro). Em seguida, testamos o contedo dessa varivel para verificar se ela realmente verdadeira imprimindo na tela caso seja. Usaremos a estrutura IF, uma estrutura de controle que veremos com mais detalhes no capitulo 4, para testar a varivel. Observe:

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 .

6.2.2. Tipo inteiro


So os nmeros que pertencem ao conjunto dos nmeros inteiros, abrangendo valores negativos e positivos, trata-se de valores decimais.

Projeto E-jovem - Mdulo II

P"P e M#$%L

64

6.2.3. Tipo ponto flutuante:


Os nmeros de ponto flutuante (floats e doubles) so nmeros com casas decimais, onde a vrgula substituda por um ponto. Exemplo:

6.2.4. Tipo numrico


Nmeros podem ser especificados em notao decimal (base 10), hexadecimal (base 16) ou octal (base 8), opcionalmente precedido de sinal (- ou +), esse tipo abrange todos os valores abaixo:

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.

6.2.5. Tipo String


Uma string uma cadeia de caracteres alfanumricos. Para declar-las podemos utilizar aspas simples ( ' ' ) ou aspas duplas ( ). Exemplo:

Observe na tabela abaixo o que podemos tambm inserir em uma String:

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

Resultado: \tipo de dado: 'inteiro'


Projeto E-jovem - Mdulo II

P"P e M#$%L

65

6.2.6. Tipo array


Array uma lista de valores armazenados na memria, os quais podem ser de tipos diferentes (nmeros, strings, objetos) e podem ser acessados a qualquer momento, pois cada valor relacionado a uma chave. Um array tambm pode crescer dinamicamente com a adio de novos itens. Veja no capitulo 6 como manipular esse tipo de estrutura.

6.2.7. Tipo objeto


Um objeto uma entidade com um determinado comportamento definido por seus m todos (aes) e propriedade (dados). Para criar um objeto deve-se utilizar o operador new. Para mais informaes sobre orientao a objeto, consulte o site http://php.net e pesquise sobre object.

6.2.8. Tipo recurso


Recurso (resource) uma varivel especial que mantm uma referncia de recursos externos. Recursos so criados e utilizado por funes especiais, como uma conexo ao banco de dados. Um exemplo a funo mysql_connect(), que ao conectar-se ao banco de dados, retorna um varivel de referncia do tipo recurso. Exemplo: Resource mysql_connect(...) Outro exemplo: mysql_fetch_row(...)

6.2.9. Tipo null


Quando atribumos um valor do tipo null(nulo) a uma varivel estamos determinando que a mesma no possui valor, e que seu nico valor nulo. Exemplo: $abc = null;

6.3. Constantes 6.3.1. Constantes pr-definidas


O PHP possui algumas constantes pr-definidas, indicando a verso do PHP , o Sistema Operacional do servidor, o arquivo em execuo e diversas outras informaes. Para ter acesso a todas as constantes pr-definidas, pode-se utilizar a funo phpinfo(), que exibe uma tabela contendo todas as constantes pr-definidas, assim como configuraes da mquina, sistema operacional, servidor HTTP e verso do PHP instalada, como foi feito em exemplos anteriores.

6.3.2. Definindo constantes


Para definir constantes utiliza-se a funo define. Uma vez definido, o valor de uma constante no poder mais ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode conter nem um array nem um objeto. A assinatura da funo define a seguinte: define("NOME_DA_CONSTANTE","valor inaltervel"); Exemplo: Resultado: valor inaltervel

Projeto E-jovem - Mdulo II

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;

6.4. Converso de varivel


PHP utiliza checagem de tipos dinmica, ou seja, uma varivel pode conter valores de diferentes tipos em diferentes momentos da execuo do script. Por este motivo no necessrio declarar o tipo de uma varivel para us-la. O interpretador PHP decidir qual o tipo daquela varivel, verificando o contedo em tempo de execuo. Ainda assim, permitido converter os valores de um tipo para outro desejado, utilizando o typecasting ou a funo settype (ver adiante). Assim podemos definir novos valores para terminadas variveis: typecasting (int),(integer) (real),(float),(double) (string) (object) Exemplos: Convertendo de ponto flutuante para inteiro. Descrio Converte em inteiro. Converte em ponto flutunte. Converte em string. Converte em objeto.

Resultado: 208 Convertendo de String para Object.

Resultado: stdClass Object ( [scalar] => Bem vindo ao site! )

Projeto E-jovem - Mdulo II

P"P e M#$%L Convertendo de inteiro para ponto flutuante.

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.5. EXERCCIOS PROPOSTOS


1) Qual a principal finalidade de uma varivel? 2) O que significa tipagem automtica. 3) Cite algumas dicas importantes na nomenclatura de variveis: 4) Das variveis abaixo, quais possuem nomenclaturas vlidas. $a___b; $a_1_; $_incio; $@nome; $val_!; $--nome; $a_|_; $#valor; $palavra; $tele#; $123; $__=__; $VALOR_MAIOR; $____; $all; Resposta: __________________________________________________________________________ 5) Crie dez variveis atribuindo valores diversos, logo aps use o comando echo pra imprimir na tela do browser, exemplo:
<?php $nome = Maria Cavalcante; echo $nome; .... ?>

6) Quais os tipos de variveis que podemos citar em PHP . 8) Como podemos distinguir um tipo de varivel de outro, uma vez que a tipagem feita de forma automtica em PHP . 9) Faa a ligao com os seguintes tipos: 1 - $var = -10; ( )ponto flutuante. 2 - $var = palavra; ( )tipo null. 3 - $var = 10.22; ( )tipo objeto. 4 - $var = true; ( )String. 5 - $var = null; ( )numrico. 6 - $var = new abc; ( )booleano. 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!

Captulo 7. Operadores em PHP


Objetivos
Demostrar os tipos e quais os operadores; Falar do conceito de atribui o e concatenao de strings; Exemplificar os operadores, sua importncia e funcionamento. Os operadores tem seu papel importante dentro de qualquer linguagem de programa o. atravs deles que podemos realizar diversos operaes dentro de um programa, seja ela de atribuio, aritmtica, relacional, lgico, dentre outros. Em PHP no diferente, os operadores so utilizados constantemente, porm existem algumas regras que veremos mais adiante.

7.1. Operadores de strings


So operadores utilizados para unir o contedo de uma string a outra, com isso podemos dizer que h dois operadores de string. O primeiro o operador de concatenao ('.') que j utilizamos em exemplos anteriores, ele retorna a concatenao dos seus argumentos direito e esquerdo. O segundo o operador de atribuio de concatenao ('.='), que acrescenta o argumento do lado direito no argumento do lado esquerdo. Observe o exemplo abaixo:

Nesse exemplo pode-se observar a declarao da varivel $d, logo aps temos uma inicializao e atribuio de concatenao em uma mesma linha, isso possvel em PHP , deixando o cdigo mais otimizado porm menos legvel.

7.2. Operadores de atribuio


O operador bsico de atribuio "=" (igual). Com ele podemos atribuir valores as vari veis como foi visto em exemplos anteriores. Isto quer dizer que o operando da esquerda recebe o valor da expresso da direita (ou seja, " configurado para"). Mas podemos usar algumas t cnicas, observe o exemplo abaixo:

Resultado: a = 9,b = 4 Alm do operador bsico de atribuio, h "operadores combinados" usados para array e string, eles permitem pegar um valor de uma expresso e ento usar seu prprio valor para o resultado daquela expresso.
Projeto E-jovem - Mdulo II

P"P e M#$%L Por exemplo:

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L Observe mais um exemplo aplicando os demais operadores.

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.

7.3. Operadores de decremento e incremento


So operadores usados para atribuir em 1 ou -1 a vari vel, isso pode ser feito antes ou depois da execuo de determinada varivel. A tabela abaixo mostra tais operadores: Operadores ++$a $a++ - -$a $a- Exemplo: Descrio Pr-incremento. Incrementa $a em um e, ento, retorna $a. Ps-incremento. Retorna $a, ento, incrementa $a em um. Pr-decremento. Decrementa $a em um e, ento, retorna $a. Ps-decremento. Retorna $a, ento, decrementa $a em um.

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

Projeto E-jovem - Mdulo II

P"P e M#$%L

7.4. Operadores aritmticos


Os operadores aritmticos so operadores que j conhecemos, porm com a exceo de % (modulo) onde ele retorna como resultado o resto da diviso entre dois valores. Operadores + * / % Exemplo: Nesse exemplo fizemos algumas operaes, porm ao utilizar parnteses, estamos determinando quem executa primeiro, no caso a soma de $b+5. Descrio Adio. Subtrao. Multiplicao. Diviso. Mdulo ou resto da diviso.

7.5. Operadores relacionais


Os operadores relacionais, ou conhecidos tambm como operadores de comparao, so utilizados para fazer determinadas comparaes entre valores ou expresses, resultando sempre um valor booleano verdadeiro ou falso(TRUE ou FALSE). Para utilizamos esses operadores usamos a seguinte sintaxe: ( valore ou expresso ) + ( comparador) + ( segundo valor ou expresso ) Observe a tabela abaixo: Comparadores == === != ou <> < > <= >= Descrio Igual. Resulta em TRUE se as expresses forem iguais. Idntico. Resulta em TRUE se as iguais e do mesmo tipo de dados. Diferente. Resulta verdadeiro se as variveis foram diferentes. Menor ou menor que. Resulta TRUE se a primeira expresso for menor. Maior ou maior que. Resulta TRUE se a primeira expresso for maior. Menor ou igual. Resulta TRUE se a primeira expresso for menor ou igual. Maior ou igual. Resulta TRUE se a primeira expresso for maior ou igual.

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

7.6. Operadores lgicos ou booleanos


So chamados de operadores lgicos ou booleanos por se tratar de comparadores de duas ou mais expresses lgicas entre si, fazendo agrupamento de testes condicionais e tem como retorno um resultado booleano. Na tabela abaixo temos os operadores e suas descries: Operador ( $a and $b ) ( $a or $b ) ( $a xor $b ) ( ! $a ) ($a && $b) ($a || $b) Descrio E : Verdadeiro se tanto $a quanto $b forem verdadeiros. OU : Verdadeiro se $a ou $b forem verdadeiros. XOR : Verdadeiro se $a ou $b forem verdadeiro, de forma exclusiva. NOT : Verdadeiro se $a for falso, usado para inverter o resultado da condio. E : Verdadeiro se tanto $a quando $b forem verdadeiros. OU : Verdadeiro se $a ou $b forem verdadeiros.

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L

Em outro exemplo temos os operadores lgicos mais comuns:

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.

7.7. Precedncia de Operadores


Agora j conhecemos uma boa quantidade de operadores no PHP , falta agora conhecer a precedncia de cada um deles, ou seja, quem mais importante, qual operador avaliado primeiro e qual avaliado em seguida. Observe o seguinte exemplo:

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,

Projeto E-jovem - Mdulo II

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

7.8. EXERCCIOS PROPOSTOS


1) Qual a finalidade dos operadores de strings. 2) Quais os operadores de decremento e incremento, cite alguns exemplos: 3) Qual a finalidade do operador aritmtico %(modulo). 4) Cite os operadores relacionais, mostre alguns exemplos. 5) Quais operadores lgicos ou booleanos. 6) Quais os operadores de atribuio. 7) Qual a sintaxe do uso de ternrio e cite um exemplo. 8) Quais os operadores utilizados e o resultado final do cdigo abaixo:
<?php $a =10; $b = 12.5; $c = $a+$b; print $a>$b? ver!a!eiro " #al$o%; print $c>=$b? ver!a!eiro " #al$o%; ?>

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

$var2 ? $im " n/o%;

11)Usando o operador de String . para montar a seguinte frase abaixo:


<?php $a = !e; $b = 0 1m; $c = com1nica2/o; $c = a; $! = internet; $e = meio; print ?> ..... %;

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%; ?>

Projeto E-jovem - Mdulo II

P"P e M#$%L

Captulo 8. Estruturas de Controle e Repetio


Objetivos
Mostra estruturas de controle e sua aplicao prtica em PHP; Definir qual a principal finalidade dessas estruturas; Mostrar exemplos em sua sintaxe; Mostrar aplica o e uso de foreach. As estruturas que veremos a seguir so comuns para as linguagens de programao imperativas, bastando descrever a sintaxe de cada uma delas resumindo o funcionamento. Independente do PHP , boa parte das outras linguagens de programao tem estruturas iguais, mudando apenas algumas sintaxes.

8.1. Blocos de controle


Um bloco consiste de vrios comandos agrupados com o objetivo de relacion-los com determinado comando ou funo. Em comandos como if, for, while, switch e em declaraes de funes blocos podem ser utilizados para permitir que um comando fa a parte do contexto desejado. Blocos em PHP so delimitados pelos caracteres { e }. A utiliza o dos delimitadores de bloco em uma parte qualquer do cdigo no relacionada com os comandos citados ou funes no produzir efeito algum, e ser tratada normalmente pelo interpretador. Outro detalhe importante: Usar as estruturas de controle sem blocos delimitadores faz com que somente o prximo comando venha ter ligao com a estrutura. Observe os exemplos: Observe que o temos um comando IF, onde passado a ele uma expresso booleana que retorna verdadeiro ou falso. O resultado da expresso FALSE(falso), pois 0 no maior que 2, fazendo com que o IF no execute o echo com comando1. Somente o segundo echo executado, pois no pertence ao IF declarado. Mas se quisermos que mais de um comando pertena a estrutura de controle, ser usado blocos de comandos ( { comando; } ), onde atravs deles podemos delimitar e organizar os cdigos. No cdigo ao lado, temos um bloco onde inserimos dois comandos. Observe que eles no sero executados, pois a expresso booleana passada para o IF falsa.

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L i# e6pre$$/o% coman!o; i# e6pre$$/o%7 coman!o1; coman!o2; coman!o);

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

8.3. Atribuio condicional (ternrio)


Como j vimos exemplos de atribuio condicionais(ternrios), podemos defini-los usando a sintaxe: (expresso booleana) ? (executa caso verdadeiro) : (executa caso falso); Isso se aplica quando queremos uma estrutura resumida, onde podemos ter um resultado mais direto, como por exemplo, atribuir um valor a uma varivel dependendo de uma expresso. Observe o exemplo abaixo onde envolvemos uma varivel do tipo string, porm o valor atribudo a essa varivel dever ser de acordo com o valor da idade:

uma estrutura parecida com IF e ELSE, onde dependendo da expresso booleana podemos executar um bloco ou no. Exerccio rpido:
@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.

8.4.1. SWITCH com BREAK


Break uma instruo(comando) passada quando queremos parar o fluxo da execu o de um programa. Em PHP , ele tem a mesma funo que abortar o bloco de cdigo correspondente. Observe o mesmo exemplo com o uso de break: Temos agora como resultado opo 2:. O comando break fez com que os demais case's abaixo do 'case 2' n o sejam executados. Obs.: Alm de nmeros podemos tambm comparar outros tipos como string, pontos flutuantes e inteiros, veja um exemplo abaixo:

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

P"P e M#$%L Observe o exemplo abaixo:

!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%;

Projeto E-jovem - Mdulo II

P"P e M#$%L Exemplo:

!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

Parmetros condio incremento

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.

Exemplo: while for


Projeto E-jovem - Mdulo II

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

Projeto E-jovem - Mdulo II

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:

0-ana 1-maria 2-joo 3-alex


Nesse exemplo observamos que cada elemento do array possui um ndice(chave), imprimindo na tela o numero da posio e o valor guardado.

8.9. BREAK.
Outro comando importante o break, usado para abortar(parar) qualquer 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:

Projeto E-jovem - Mdulo II

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L

8.11. EXERCCIOS PROPOSTOS


1) Qual a principal finalidade de uma estrutura de controle. 2) Qual a principal finalidade de uma estrutura de repetio. 3) Crie um cdigo com a um condio ternria onde receba um valor booleano e de acordo com o valor passado na expresso, deve imprimir sim ou no. 4) Com o comando IF e ELSE crie um cdigo que determine se uma expresso verdadeira ou falsa. 5) Qual a finalidade da estrutura de controle SWITCH e cite um exemplo onde comparamos uma opo com 4 casos diferente. 6) Crie um contador de 1 at 20 usando a estrutura de repetio WHILE. 7) Crie um contador de 1 at 100 usando DO WHILE. 8) Crie um contador de 100 at 1 usando FOR. 10) Qual a fonalidade de um FOREACH. 11) Crie um cdigo onde podemos para a execuo de um lao infinito com o uso de BREAK. 12) Como podemos determinar o uso de CONTINUE e qual a sua aplicao prtica em PHP . 13) Crie um cdigo com as seguintes caractersticas: a) Dever receber um valor inicial e outro final (crie duas variveis para esse fim). b) Como o comado FOR crie um lao onde a contagem e determinada pelo valor inicial e final. c) Dentro do for dever conter um IF e ELSE responsvel por compara os valores passado a ele e imprimir os pares e impares. Exemplo:
@A $valor-2==0% echo $valor. 0 1m n1mero par; BCDB echo $valor. 0 1m n1mero impar;

d)Exemplo prtico: foi passado o numero inicial 8 e o final 15, ento o script PHP dever imprimir o intervalo entre esse numero ou seja 8,9,10,11,12,13,14,15, mostrando quais deles so pares e quais so impares.

Projeto E-jovem - Mdulo II

P"P e M#$%L

!!

Captulo 9. Manipulao de Arrays


Objetivos
Abordar de forma clara as principais estruturas de um array; Mostrar a sua cria o e manipulaes possveis; Definir arrays multidimensionais ou matrizes; Determinar formas de intera es e acessos.

Um array no PHP atualmente um conjunto de valores ordenado. Podemos relacionar cada valor com uma chave, para indicar qual posio o valor est armazenado dentro do array. Ele otimizado de vrias maneiras, ento podemos us-lo como um array real, lista (vetor), hashtable (que uma implementao de mapa), dicionrio, coleo, pilha, fila e provavelmente muito mais. Alm disso, o php nos oferece uma gama enorme de funes para manipul-los. A explicao dessas estruturas esto alm do escopo dessa apostila, mas todo contedo aqui abordado trs uma boa base para quem estar iniciando o contedo de array.

9.1. Criando um Array


Arrays so acessados mediante uma posio, como um ndice numrico. Para criar um array podese utilizar a funo array([chave =>] valor, ). Exemplo: Sintaxe: $nome$ = arra< EMariaEFEGo/oEFEHliceEFEHle6E%; ou $nome$ = arra< 0=>EMariaEF 1=>EGo/oEF 2=>EHliceEF )=>EHle6E%; Nessa sintaxe temos duas formas de declarar uma varivel do tipo array. Onde a chave o ndice podem ser de forma automtica como no primeiro exemplo, ou manual como no segundo. Outro detalhe importante que: Todo array comea pela chave ou ndice de numero 0, quando o mesmo no declarado. Tambm temos outras formas de criar um array, onde simplesmente podemos adicionar valores conforma a sintaxe abaixo: $nomeIJ $nomeIJ $nomeIJ $nomeIJ = = = = EMariaE; EGo/oE; ECarlo$E; EGo$0E;

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L Em cdigo temos:

!9

9.2. Arrays Associativos.


Aos arrays associativos associa-se um determinado valor ou nome a um dos valores do array. O array associativo usa strings como ndice, onde cada string pode representas uma chave. Observe a sintaxe:
$var = arra< Ete6to1E=>Evalor1EFEte6to2E=>Evalor2EF...FEte6toKE=>EvalorKE%;

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:

Outra forma de iniciarmos o mesmo array adicionar valores conforme abaixo:

A imagem abaixo representa os exemplo anteriores:

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L Exemplo:

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.

9.4. Acessando um Array


Quando criamos um array temos que ter em mente que estamos criando uma vari vel que possui vrios valores e que os mesmo podem ser acessados a qualquer momento. Cada valor est guardado em uma posio que pode ser acessada atravs de uma chave. A sintaxe para acesso simplificado de um array a seguinte: nome;!o;arra<I chave;!e;ace$$o J;
Projeto E-jovem - Mdulo II

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.

9.5. Alterando um Array


Podemos alterar qualquer valor de um array. muito semelhante ao acesso, onde, a diferena est na chamada do array. nesse momento que atribumos um novo valor. Veja a sintaxe: nome;!o;arra<I chave;!e;ace$$o J = <novo;valor>; Observe o exemplo abaixo:

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 .=:

Projeto E-jovem - Mdulo II

P"P e M#$%L

92

Resultados: Arroz Tio Joo 1.98

Podemos observar que assim como as variveis comuns, a forma de alterar o valor de um array igual. A diferena est na chamada do array, pois temos que passar a chave 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.

9.6. Arrays multidimensionais


Os arrays multidimensionais so estruturas de dados que armazenam os valores em mais de uma dimenso. Os arrays que vimos at agora armazenam valores em uma dimenso, por isso para acessar s posies utilizamos somente um ndice ou chave. Os arrays de 2 dimenses salvam seus valores de alguma forma como em filas e colunas e por isso, necessitaremos de dois ndices para acessar a cada uma de suas posies. Em outras palavras, um array multidimensional como um continer que guardar mais valores para cada posio, ou seja, como se os elementos do array fossem por sua vez outros arrays. Outra ideia que temos que matrizes so arrays nos quais algumas de suas posies podem conter outros arrays de forma recursiva. Um array multidimensionais pode ser criado pela fun o array(): Na figura abaixo temos a representao de um array com duas dimenses.

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L Cdigo:

93

Outra forma de inicia o array:

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L Abaixo, um exemplo que acessa todos os valores do array e imprime com quebra de linha: resultado:

94

0.0 igual a 0 ,1.0 igual a 1 e assim sucessivamente.

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.

9.7. Funes com Arrays


Em PHP temos um conjuntos de funcionalidades e que j vem prontas para serem utilizadas. Trata-se de funes que j esto pr-definidas, voc pode encontr-las facilmente no site php.net. Abordaremos agora funes utilizadas exclusivamente para manipulao de array, funes de acesso, ordenao, dentre outras. Obviamente que no falaremos de todas, pois existem muitas funes, mas mostraremos as mais utilizadas, e outras que so definidas como principais. var_dump Essa funo muito usada por programadores que pretendem realizar debug(an lise mais detalhado para encontrar supostos erros). Observe um exemplo prtico:

Projeto E-jovem - Mdulo II

P"P e M#$%L Sada no Browser:

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:

Projeto E-jovem - Mdulo II

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)

Projeto E-jovem - Mdulo II

P"P e M#$%L Funes


in_array sort rsort explode implode

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L

9!

9.8. EXERCCIOS PROPOSTOS


1) O que um array, e qual a sua principal finalidade.

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L

99

Captulo 10. Manipulao de Funes


Objetivos
Apresentar as estrutura de funes em PHP; Mostrar qual a definio entre varivel global e esttica e sua relao com o uso de funes; Mostrar tambm o uso de passagem de parmetros, recurso e qual a sua principal finalidade.

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.

10.1. Declarando uma Funo.


Declaramos uma funo, com o uso do operador function seguido do nome que devemos obrigatoriamente atribuir, sem espaos em branco e iniciando sempre com uma letra. Temos na mesma linha de cdigo a declarao ou no dos argumentos pelo par de parnteses (). Caso exista mais de um parmetro, usamos virgula(,) para fazer as separaes. Logo aps encapsulamos o cdigo pertencente a funo por meio das chaves ({}). No final, temos o retorno com o uso da clusula return para retornar o resultado da funo que pode ser um tipo inteiro, array, string, ponto flutuante etc. A declarao de um retorno no obrigatrio. Observe a sintaxe: #1nction nome;!a;#1n2/o 7 coman!o$; ret1rn $valor; 8 $arLmento;1F $arL1mento;2F $arL1mento;n %

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

10.2. Escopo de Variveis em Funes


Um conceito importante em programao so os tipos de declaraes de variveis, onde sua visibilidade vai depender de onde ela declarada. O acesso a essas variveis podem ser definidas da seguinte forma: Variveis locais So aquelas declaradas dentro de uma funo e no tem visibilidade fora dela. Veja um exemplo: O valor da varivel $a no impresso na tela, pois ela s existe dentro da funo, qualquer outra varivel declarada com o mesmo nome fora da funo uma nova varivel.

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

Projeto E-jovem - Mdulo II

P"P e M#$%L

101

10.3. Passagem de Parmetro.


Como vimos anteriormente, podemos passar ou no parmetros em uma funo, porm existem dois tipos de passagem de parmetros: Por valor(by value) e por referncia(by reference). Por Valor Normalmente, a passagem de parmetros em PHP feita por valor, ou seja, se o contedo da varivel for alterado, essa alterao no afeta a varivel original. Exemplo:

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:

Resultado: nome = Alex ,nome = Sara ,nome = Maria ,nome = Bruna ,


Projeto E-jovem - Mdulo II

P"P e M#$%L

102

10.4. Valor de Retorno


Toda funo pode opcionalmente retornar um valor, ou simplesmente executar os comandos e no retornar valor algum. No possvel que uma funo retorne mais de um valor, mas permitido fazer com que uma funo retorne um valor composto, como listas ou array's. As operaes aritmticas podem ser feita de forma direta no retorno. Observe um exemplo onde temos uma operao direta:

Resultado: O resultado : 139.5

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

10.6. EXERCCIOS PROPOSTOS


1) Diga com suas palavras uma definio para funo, e como podemos declar-la em PHP . 2) Qual a diferena de variveis globais para variveis locais e como podemos defini-las em PHP . 3) O que um parmetro, e quais os tipos de parmetros em PHP . 4) Quais as funes que podemos usar para criarmos uma fun o onde seus parmetros so passados pro argumentos variveis. 5) O que um valor de retorno e qual o comando usado quando queremos retornar algo dentro de uma funo. 6) O que recurso. 7) Crie uma funo que determine se um numero par ou impa. E faa uma chamada dessa funo imprimindo o resultado. 8) Crie uma funo que calcule a fatorial de um nmero. 9) Crie uma funo para determina se um numero primo ou no. Numero primo aquele que possui dois divisores, 1 e ele mesmo. Criem um lao de repetio e use estrutura de controle. Anota"#es:

Projeto E-jovem - Mdulo II

P"P e M#$%L

104

Captulo 11. Manipulao de arquivos e diretrios


Objetivos
Mostrar formar de manipulao de arquivos; Usar os principais comandos para trabalharmos com arquivo e diretrios; Aprender a trabalhar com leitura e escrita de arquivos, listagem,e cria o de variveis buffer de arquivos. Assim como outras linguagens de programao, muito importante trabalharmos com manipulaes de arquivos e diretrios em PHP , onde temos a possibilidade de manipular um arquivo ou diretrio dentro do servidor web, podendo criar arquivos responsveis por guardar informaes referentes aquele sistema ou pgina. Essas informaes podem ser resgatadas futuramente, ou simplesmente so informaes que ao invs de serem gravadas no bando de dados, foram gravadas em um arquivo ou log(arquivos que grava informaes sobre o sistema, erros etc...). Ao trabalhar com arquivos, no mnimo duas operaes devem ser realizadas: abrir e fechar o arquivo.

11.1. Criando e Abrindo um Arquivo.


O comando utilizado para criar um arquivo o mesmo que usamos para abri-lo, porm no Linux temos que dar permisses a pasta no qual o arquivo vai ser guardado. Abra o konsole ou terminal do seu sistema(Linux). Digite: chmo! MMM +var+999 O comando chmod 777 dar todas as permisses possveis na pasta www onde trabalharmos na criao de nossos arquivos. Para abrir ou criar um arquivo utilizaremos o seguinte comando abaixo: fopen Com esse comando podemos abrir um arquivo e retornar um identificador. Sua sintaxe e a seguinte: $i!enti#ica!or = #open $trinL;!o;ar>1ivoFmo!o;!o;ar>1ivo% string_do_arquivo definido como o nome do arquivo mais a sua extens o, isso incluindo o caminho onde esse arquivo localizado ou no, por exemplo: /home/aluno/meu_arquivo.txt Podemos observar um arquivo criado dentro da pasta alunos com o nome meu_arquivo.txt. modo_do_arquivo nesse parmetro podemos determinar a forma que o arquivo vai ser aberto com os seguintes valores: r read, este modo abre o arquivo somente para leitura. w write, abre o arquivo somente para escrita, caso o arquivo no exista, tenta cri-lo. a+ append, abre o arquivo para leitura e escrita, caso o arquivo no exista, tenta cri-lo. Existem outros modos, mas trabalharemos somente com estes.

Projeto E-jovem - Mdulo II

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.

11.2. Gravando em um arquivo.


Aps o uso do comando fopen, temos um identificador apontando para o arquivo, e com ele que podemos fazer alteraes ou manipulaes. Podemos gravar dados dentro do arquivo com o uso do seguinte comando: fwrite sintaxe: #9rite in!enti#ica!orFconteN!o% identificador o parmetro retornado pelo comando fopen. contedo o contedo a ser gravado no arquivo. Vale ressaltar que para podermos gravar no arquivo ele deve ter permisso dentro do linux e alm disso ter como parmetro w ou a+ passado para o comando fopen. Observe um exemplo onde escrevemos(gravamos) duas linhas dentro de um arquivo de texto criado com os comando visto at agora: Exemplo: Resultado:

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:

Projeto E-jovem - Mdulo II

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.

11.3. Fechando um arquivo.


At agora trabalhamos com o comando fopen e no fechamos o arquivo, simplesmente abrimos e executamos os demais comandos. Isso faz com que, caso tenhamos de usar o mesmo arquivo em outra parte do cdigo, ele no poder ser utilizado, pois para isso preciso fech-lo para ele poder ser aberto novamente em outra parte do cdigo. Para isso usamos o seguinte comando: fclose sintaxe: #clo$e in!enti#ica!or% exemplo: Toda vez que abrimos um arquivo com fopen, devemos fech-lo com o comando fclose conforme o exemplo ao lado.

11.4. Lendo um arquivo.


Aps abrirmos um arquivo, outra operao que podemos efetuar a leitura do contedo existente no arquivo. Essa operao feita linha por linha, onde podemos resgatar valores existentes de acordo com a chamada do comando fread ou o ndice do array criado pelo comando file. file L um arquivo e retorna um array com todo seu contedo, de modo que a cada posio do array representa uma linha do arquivo comeando pelo ndice 0. sintaxe: $arra< = #ile $trinL;!o;ar>1ivo% string_do_arquivo da mesma forma que definida no comando fopen, usa-se o caminho com o nome do arquivo ou simplesmente o nome do arquivo caso ele exista na mesma pasta onde o arquivo PHP que contm o comando foi criado. Exemplo: Resultado:

Nesse exemplo utilizamos o arquivo anterior onde foi escrito 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:

Projeto E-jovem - Mdulo II

P"P e M#$%L Exemplo: Resultado:

10

11.5. Copiando,Renomeando e Apagando um Arquivo


Em PHP tambm possvel copiarmos um arquivo de uma origem para um determinado destino, como tambm apagar esse arquivo. Para isso usamos os seguintes comando:
copy Cria um arquivo para outro local/nome. retornando um valor booleano verdadeiro(true) caso a copia tenha ocorrido sem eros ou falhas, caso contrrio retorna falso(false). Sintaxe: cop< $trinL;oriLemF$trinL;!e$tino% exemplo:

Caso tudo ocorra corretamente, o resultado apresentado no navegador Cpia efetuada, e ser criado uma cpia dentro da pasta com o nome meu_novo_arquivo.txt. Vale lembrar que podemos tambm passar o caminho completo para onde deve ser copiado, como por exemplo: +home+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

Projeto E-jovem - Mdulo II

P"P e M#$%L

10! Aps executarmos isso no navegador, percebemos as mudanas ocorridas dentro do diretrio.

11.6. Manipulando Diretrio.


Alguns comandos bsicos so necessrios para manipulao de diretrios, mostraremos apenas como obter o diretrio atual, como criar e apagar um diretrio, para isso usamos os seguintes comandos: mkdir Cria um diretrio de acordo com a localizao e o modo. Sintaxe: m=!ir $trinL;locali:a2/oF int;mo!o%; string_localizao definido como o caminho com o nome do diretrio,ou somente o nome. int_modo onde definimos as permisses de acesso(como se fosse o chmod do Linux). Dessa forma podemos criar um diretrio e j atribuirmos as permisses a ele. getcwd Retorna o diretrio corrente, este comando usado caso precise obter o diretrio onde o arquivo PHP que possui este comando est guardado. sintaxe: Letc9! % rmdir Apaga um diretrio.Sintaxe: rm!ir nome;!iretOrio%;

Projeto E-jovem - Mdulo II

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.

11.7. EXERCCIOS PROPOSTOS


1)O que manipulao de arquivos. 2)Observe o cdigo-fonte abaixo:
1 2 ) * 5 <?php $ar>1ivo = #open 5all.t6t5F595%; #9rite $ar>1ivoF 5oi t1!o bemP5%; #clo$e $ar>1ivo%; ?>

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

Captulo 12. Interaes PHP com HTML


Objetivos
Apresentar ao aluno como trabalhar com interaes PHP dentro do cdigo HTML; Mostrar exemplos de formulrio, o uso de mtodos POST e GET, cookies, listagem, seo e suas interaes com o Browser.

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

Projeto E-jovem - Mdulo II

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:

Projeto E-jovem - Mdulo II

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.

12.2. Exemplo de formulrio.


Veremos agora exemplos de alguns formulrios comumente encontrados, usando os componentes apresentado anteriormente. No entraremos em detalhes do HTML, sendo apresentado de maneira direta, pois est subentendido que o aluno j conhea HTML. Observe os exemplos abaixo: Tela de login: cdigo-fonte:

Resultado:

Tela de Cadastro: cdigo-fonte:

Projeto E-jovem - Mdulo II

P"P e M#$%L Resultado com dados preenchidos:

113

Tela de envio de dados e arquivos: cdigo-fonte:

Resultado:

Com esses exemplos, j podemos trabalhar com as informaes at agora mostrada. Para isso vamos conhecer os dois principais mtodos de envio de dados de um formulrio para um arquivo PHP .

Projeto E-jovem - Mdulo II

P"P e M#$%L

114

12.3. Mtodo Post e Get


Quando falamos em como enviar dados para um formulrio, deve vir em mente os mtodos GET e POST, que so os mtodos utilizados. Mas quando fazemos uma requisio HTTP, sempre utilizamos um desses mtodos, normalmente o GET. Se voc digita um endereo na barra de endereo seu navegador e aperta a tecla enter (ou clica no boto ir), o navegador faz uma requisio HTTP para o servidor do endereo digitado e o mtodo dessa requisio o GET. Se voc clica em um link em um site, o navegador tambm se encarrega de fazer um requisio HTTP com o mtodo GET para buscar o contedo da pgina que voc clicou. Esse mecanismo funciona da seguinte forma. Primeiro temos em um formul rio, um boto ou link. Quando clicamos em umas dessas propriedades, estamos enviando uma requisi o. A forma de enviar pode ser definida pelo mtodo get ou post e deve ser enviada para algum arquivo, que ao receber, processe a informao devolvendo resultado ou no. Veja a ilustrao abaixo:

12.3.1. Mtodo Get


O mtodo GET utiliza a prpria URI (normalmente chamada de URL) para enviar dados ao servidor. Quando enviamos um formulrio pelo mtodo GET, o navegador pega as informaes do formulrio e coloca junto com a URI de onde o formulrio vai ser enviado e envia, separando o endereo da URI dos dados do formulrio por um ? (ponto de interrogao) e &. Quando voc busca algo no Google, ele faz uma requisio utilizando o mtodo GET, voc pode ver na barra de endereo do seu navegador que o endereo ficou com um ponto de interrogao no meio, e depois do ponto de interrogao voc pode ler, dentre outros caracteres, o que voc pesquisou no Google. Abaixo temos um exemplo de uma URL do gmail da google, Observe:

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.

Ao clicarmos em um desses links, podemos observar o seguinte comportamento na URL do navegador:

Projeto E-jovem - Mdulo II

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 .

Recebendo dados via mtodo GET


Agora trabalharemos com o arquivo PHP , onde podemos resgatar os valores enviados pelo m todo $_GET,sua sintaxe a seguinte: $;QBRIEnome;!a;campoEJ retorna o valor passado pelo campo. $;QBR retorna um array com todos os valore enviados e seus supostos ndices. Quando queremos um valor especifico, colocamos o nome da vari vel da URL ou o nome atribudo na propriedade name do input do formulrio. Exemplo com links: cdigo HTML: cdigo PHP(nome do arquivo: gravar.php): Resultado:

Exemplo com Formulrio: cdigo HTML:

Resultado Browser:

no

cdigo PHP(nome do arquivo: gravar.php):

Projeto E-jovem - Mdulo II

P"P e M#$%L Resultado:

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.

12.3.2. Mtodo Post


Muito semelhante ao mtodo GET, porm a principal diferena est em enviar os dados encapsulado dentro do corpo da mensagem. Sua utilizao mais vivel quando trabalhamos com informaes segura ou que poder ser alteradas somente por eventos do Browser. Sintaxe: $;STDRIEnome;!a;campoEJ retorna o valor passado pelo campo. $;STDR retorna um array com todos os valore enviados e seus supostos ndices. Veja o mesmo exemplo anterior, porm com o uso de POST: Exemplo com Formulrio: cdigo HTML:

Mudana no mtodo

cdigo PHP(nome do arquivo: gravar.php):

Resultado aps o envio dos dados preenchidos:

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

Projeto E-jovem - Mdulo II

P"P e M#$%L

11

12.4. Interaes com o Browser


PHP tambm permite interagir com informaes do browser automaticamente. Isso pode ser muito til quando queremos coletar informaes sobre o cliente, como por exemplo, o tipo de browser(navegador), ou qual o sistema operacional, dentre outras informaes. O cdigo a seguir mostra informaes sobre o browser do usurio:

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 %

Observe outro cdigo com o uso da funo strpos() :

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:

Projeto E-jovem - Mdulo II

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:

Atributo nome_do_cookie seu_valor seu_valor

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.

path domnio conexo_segura

Observe um cdigo onde criamos um cookie:

Projeto E-jovem - Mdulo II

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:

Data de vencimento do cookie, aps ela ele deletado automaticamente

Projeto E-jovem - Mdulo II

P"P e M#$%L Validade: Validade de 7 dias a partir do dia 12.

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L

122

12.7. Requisio de Arquivos


Assim como em muitas outras linguagens de programa o tambm possvel incluir dentro de um script PHP outros arquivos contendo outras definies, constantes, configuraes, ou at mesmo carregar um arquivo contendo a definio de uma classe. Para isso podemos usar os seguintes comandos: include<arquivo>: A instruo include() inclui e avalia o arquivo informado. O cdigo existente no arquivo entram no escopo do programa que foi inserido, tornando-se disponvel a partir da linha em que a incluso ocorre. Se o arquivo no existir, produzir uma mensagem de advertncia(warning). Exemplo onde temos dois arquivos: cdigo do arquivo_teste.php cdigo do arquivo index.php

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

Projeto E-jovem - Mdulo II

P"P e M#$%L

123

12.8. Tratamentos de erro.


So muito comuns erros na programao PHP , que podem partir do programador como pessoa fsica, do servidor, ou outros fatores envolvidos que juntos venham ocasionar em um erro. Existem quatro tipos de erros no PHP para indicar a gravidade do erro encontrado ou ocorrido. Eles so:

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:

Imprimindo a mensagem de erro:

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L

124

12.9. EXERCCIOS PROPOSTOS


1)Crie um formulrio HTML com os seguintes campos: nome, endereo, e-mail, senha, e o boto enviar. 2)Utilize o mtodo Get para visualizar os dados do array na URL do navegador ao clicar no boto enviar. 3)Qual a diferena do mtodo POST e GET. 4)Como podemos receber dados via mtodo GET. Exemplifique. 5)Como podemos receber dados via mtodo POST. Exemplifique. 6)Crie um arquivo chamado dados.php, nesse arquivo dever conter os seguintes requisitos: -Os dados do formulrio da questo 1 dever ser enviado para esse arquivo via metodo POST. -O aquivo dados.php dever conter cinco variveis, cada uma para determinado campo, exemplo:
$nome = $;STDRIEnomeEJ; -Os valores dever ser impresso na tela. 7)Qual a finalidade da varivel global $HTTP_USER_AGENTE. 8)Crie um cookie gravando nele o seu nome, logo aps abra o Firefox e Exiba o valor gravado. 9)Crie um arquivo chamado criar_sessao.php, utilize comando PHP para cria uma se o com a durabilidade de 3 minutos e adicione o valor sesso ativa. 10)Crie um novo arquivo chamado ler_sessao.php para verificar se a sess o criada na questo 9 existe ou no. Utilize o comando $_SESSION para ler o valor nela contido e imprima na tela. 11)Quais os possveis erros existentes em PHP e qual a definio de cada um deles.

Projeto E-jovem - Mdulo II

P"P e M#$%L

125

Captulo 13. Introduo ao MySQL


Objetivos
Apresentar ao aluno as principais estruturas do banco de dados MYSQL de forma pr tica e explicativa. Abordar os principais comando SQL.

13.1. O que o MYSQL?


O MySQL um completo sistema de gerenciamento de bancos de dados relacional. Tem como caractersticas mais marcantes a estabilidade e agilidade. Foi criado por uma empresa sueca chamada TcX e vem sendo desenvolvido por mais de 10 anos. O seu intuito ao cri-lo foi de prover a seus clientes um produto altamente estvel, rpido e seguro. Atualmente um dos SGBDs (Sistema Gerenciador de Banco de Dados) mais utilizados na Internet. Vrias linguagens de programao tm interface com este, como o PHP , Java (JDBC), Perl, TCL/TK, Python, C/C++, etc, e ainda ODBC. Outro ponto forte sua portabilidade. Exitem verses para os mais diversos sistemas operacionais como Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Windows 95/ 98/ NT/ 2000/ XP/ Vista/ Windows 7, HP-UX, AIX, etc. J virmos a instalao do MYSQL no Linux no captulo-1.2.3, onde instalamos tambm o PhpMyAdmin para administrarmos o banco de dados no modo grfico e pelo navegador.

13.2. Trabalhando com MYSQL.


Para logarmos no mysql temos que abir o Konsole(terminal) e digitar o seguinte comando: m<$>l (1 root (p -u usurio, define o nome do usurio. -p password, pedido de senha. Logo aps esse comando uma senha ser pedida. Digite a senha que foi definida na instalao do banco. Depois de logarmos visualizaremos a seguinte tela:

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

13.2.1. Estruturas de Dados


Os tipos de dados possuem diversas formas e tamanhos, permitindo ao programador criar tabelas especficas de acordo com suas necessidades. Podemos definir a hierarquia de banco de dados da seguinte forma: Banco de dados > Tabela > Registro > Tipo de dados, conforme a figura abaixo:

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

TEXT/BLOB: BIT ou BOOL DOUBLE

Existem outros tipos de dados, para mais detalhes consulte o site oficial do MYSQL (http://www.mysql.com/). Abaixo temos exemplos dessas estruturas:

Tipos de dados e seus respectivos tamanhos

Nomes dos campos.


Projeto E-jovem - Mdulo II

P"P e M#$%L

12

13.2.2. Criando Banco e Tabelas


Agora que conhecemos algumas estruturas (tipos de dados), podemos come ar a trabalhamos com alguns comandos, de acordo com a hierarquia criaremos o banco de dados e depois as tabelas: CREATE DATABASE Aps logar no MYSQL podemos cria qualquer base de dados com a seguinte sintaxe: CUBHRB VHRHWHDB Enome;!o;bancoE; Exemplo: Criamos ento um banco de dados chamado alunos

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:

Aqui estar nosso bancos de dados.

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:

Projeto E-jovem - Mdulo II

P"P e M#$%L Exemplo:

12!

Para exibir as tabelas use o comando SHOW TABLES;

DROP Para apagar o banco de dados ou a tabela, usamos o comando DROP com a seguinte sintaxe: VUTS VHRHWHDB Enome;!o;bancoE; VUTS RHWCB Enome;!a;tabelaE; Exemplo: //Usado para apagar o banco de sados //Usado para apagar tabelas.

Apaga o banco de dados nomes.

Apaga a tabela dados.

13.2.3. Manipulando dados das tabelas


Para manipulao dos dados de uma tabela usamos os seguintes comandos: INSERT Usado para inserir informaes em uma tabela. Possui a seguinte sintaxe: @KDBUR @KRT nome;!a;tabela campo1Fcampo2F...F...% YHCXBD valor1Fvalor2F...F...%; O valor inserido na tabela na mesma ordem que definida os campos, ou seja, o campo1 receber o valor1, o campo2 o valor2 e assim sucessivamente. Exemplo:

SELECT Permite recuperar informaes existentes nas tabelas. Sintaxe: 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

Projeto E-jovem - Mdulo II

P"P e M#$%L UPDATE

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L

130

13.3. Trabalhando com PhpMyAdmin.


O phpMyadmin basicamente um front-end para administrao de bancos de dados MySQL. Ele dispe de uma srie de recursos interessantes para administrao do banco de dados. Com essa ferramenta possvel fazer desde atividades bsicas de administrao como criar, alterar, renomear tabelas, ou ainda fazer consultas usando SQL, como tamb m gerenciar as conexes com o banco. Vimos a sua instalao no captulo 1.2.4, onde copiamos para a pasta var/www o seu contedo. Para fazer o login na ferramenta abra o navegador e digite http://localhost/phpmyadmin/, aparecer a seguinte tela: Utilize o usurio e a senha que foi definida na instalao: Exemplo: Usurio: root Senha: 1234

Informaes do servidor
Aps o login visualizaremos a seguinte tela:

Menus

Lista de banco de dados Painel de criao de banco de dados.


Acima temos a figura da pgina inicial do phpMyAdmin. No frame do lado esquerdo est a lista de todos os bancos de dados que existem no servidor. Clicando nesses bancos possvel navegar atravs das tabelas do banco escolhido e chegar at os campos desta tabela. Na pgina inicial do phpMyAdmin, mostrada acima, ainda possvel ver documentao e existe um box para criao de um novo banco de dados. Todas as funcionalidade que utilizamos no Konsole(Terminal), anteriormente pode ser feito de forma mais simples e prtica usando a interface grficas do PhpMyAdmin.
Projeto E-jovem - Mdulo II

P"P e M#$%L Veremos agora algumas funcionalidades.

131

13.3.1. Manipulando banco de dados no PhpMyadmin.


Podemos observar na tela inicial a opo para criarmos um banco. Insira um nome e clique em criar:

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.

Quantidades de campos 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

Projeto E-jovem - Mdulo II

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 clicar aparecera uma nova tela, escola a opo inserir.

Opo para inserir dados.

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.

Apaga o registro. Esta opo edita os valores do campo.

Projeto E-jovem - Mdulo II

P"P e M#$%L Ao clicar teremos a seguinte tela:

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L

134

13.4. EXERCCIOS PROPOSTOS


1) Qual a definio que podemos atribuir ao conceito de banco de dados. 2) Como podemos logar pelo Konsole no MYSQL. 3) O que estrutura de dados em MYSQL. 4) Faa o seguinte exerccio prtico: a)crie uma tabela com os campos nome e sobrenome. b)aps criar visualize a tabela. c)insira alguns valores na tabela, no caso nomes e sobrenomes de pessoas conhecidas. d)crie um SELECT para visualizar todas as informaes gravadas no banco. e)agora atualize alguns dos campos com o comando UPDATE. 5)Abra o PhpMyAdmin e visualize a tabela criada na questo 4. 6)Qual a finalidade da ferramenta PhpMyadmin. 7)Pesquise sobre banco de dados relacional e diga porque o MYSQL considerado um bando de dados relacional. 8)Pesquise e defina o que chave primeira e chave estrangeira em banco de dados relacionais.

Projeto E-jovem - Mdulo II

P"P e M#$%L

135

Captulo 14. PHP com Banco de dados MYSQL.


Objetivos
Fazer conexo com o banco de dados usando comandos do PHP; Mostrar ao alunos as principais interaes com consultar, inserir, atualizar e deletar informaes de um database(banco de dados).

14.1. Criando e Selecionando a Conexo


Para acessar uma base de dados num servidor MySQL, necessrio antes estabelecer uma conexo. Para isso, deve ser utilizado o comando mysql_connect, ou o mysql_pconnect. A diferen a entre os dois comandos que o mysql_pconnect estabelece uma conexo permanente, ou seja, que no encerrada ao final da execuo do script. As assinaturas dos dois comandos so semelhantes, como pode ser verificado na sintaxe abaixo: mysql_connect m<$>l;connect Een!ere2o;!o;$ervi!or;m<$>lE"EportaEFEloLinEFE$enhaE%; mysql_pconnect m<$>l;pconnect Een!ere2o;!o;$ervi!or;m<$>lE"EportaEFEloLinEFE$enhaE%; Ambas conexes retornam um id que ser usado posteriormente. Tambm podemos colocar essas funcionalidades dentro de um IF para tratarmos a conexo. Veja o exemplo abaixo : Utilizamos o @ ignorar o erro da conexo, porm caso tenha algum erro ser tratado de acordo a programao do IF.

O endereo do nosso servidor localhost ou o ip 127.0.0.1, mas h casos que o servidor externo e preciso utilizar o ip ou domnio com a porta, isso vai depender se o servio de banco de dados est na mesma maquina ou no. Vale ressaltar que o login e a senha so as mesmas utilizada na instalao do MYSQL, e caso ocorra algum erro o cdigo acima, entrar no else e exibir a mensagem Erro ao conectar!. Depois de estabelecida a conexo, preciso selecionar a base de dados a ser utilizada, atravs do comando mysql_select_db, que segue a seguinte sintaxe: mysql_select_db('nome_do_banco' , 'id_conexo'); 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 .

Projeto E-jovem - Mdulo II

P"P e M#$%L

136

14.2. Manipulando Dados do Database


Aps a execuo dos dois comandos anteriores, podemos fazer as mesmas manipula es que fizermos diretamente no Konsole(Terminal) ou no PhpMyAdmin usando comandos e fun es existentes no PHP .

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:

Comando SQL. Resultado do mysql_query(). Linha 0


poderamos ter definido somente a linha da seguinte forma: Observe que o resultado imprime a linha 0 (primeira linha) da coluna cidade(coluna 4). Nota: A string da query no deve terminar com ponto e virgula(;).

Select retorna todos (*) resultados da tabela dados_pessoais Coluna 4

Projeto E-jovem - Mdulo II

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.

Projeto E-jovem - Mdulo II

P"P e M#$%L Com as tags PHP o cdigo fica assim:

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:

14.3. Criao de CRUD.


Um dos termos mais comuns quando estamos falando de programa o e banco de dados, a criao de um CRUD(acrnico de Create, Retrieve, Update e Delete em lngua Inglesa) que significa as quatros operaes bsicas de um banco de dados, que so elas: criar, recuperar, atualizar e deletar(apagar). Criaremos ento um aplicativo em PHP onde podemos estabelecer de forma clara essas operaes. Preste muita ateno, pois trabalharemos com mais cdigo-fonte. Trabalharemos com o banco de dados criado anteriormente e criaremos quatro arquivos com os seguintes nomes: index.php arquivo inicial do aplicativo WEB, nele ficar o formulrio de cadastro e os cdigos de consulta(listagem). conexao.php arquivo responsvel pela conexo e seleo do banco de dados, no utilize acentos nas nomenclaturas do arquivos. editar.php arquivo responsvel pela edio dos dados da tabela. evento.php Arquivo responsvel por eventos da aplicao, ele possuir cdigos para cadastrar(INSERT), editar(UPDATE), deletar(DELETE). Observe uma figura representando o CRUD a ser criado e a relao entre seus arquivos: Observe que a conexao.php includo nos trs arquivos, index.php envia informao para editar.php ou evento.php, editar.php envia informao para evento.php ou pode voltar para index.php, evento.php pode voltar para index.php aps executar algum comando. Vamos agora criar os arquivos e seus cdigos-fonte.

Projeto E-jovem - Mdulo II

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:

Inclu a conexo Comando SQL.


Dentro do while montamos uma tabela com os valores obtidos do bando de dados. Criamos tambm um link para deletar e outro para editar. Tanto o formulrio quanto o cdigo de listagem, devem estar no mesmo arquivo.

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

Projeto E-jovem - Mdulo II

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.

Aqui criamos um array com os valores referente ao id passado.


Depois temos que criar um formulrio parecido ao de cadastro, mudando os valores do action, e adicionando tag's PHP para preencher os valores de cada referencia, embaixo adicionamos um link para voltar ao inicio:

Observe que o action do formulrio envia as informaes para o arquivo evento.php com uma varivel GET editar= id_passado pela consulta, dessa forma podemos fazer todos os tratamento no arquivo responsvel pelo evento. 4 - E por ultimo criaremos um arquivo responsvel por todas as aes do aplicativo. Todo cdigo abaixo pertence ao arquivo evento.php: O primeiro passo incluirmos a conexo: Criaremos primeiro o cdigo responsvel pelo cadastro (INSERT).

Comando SQL responsvel por Inserir valores na tabela.


Cada evento diferenciado pelo IF atravs do comando isset, que verifica se determinada varivel existe ou no. Dessa forma, todas as requisies passada para o arquivo evento.php so diferenciadas. Cdigo responsvel por editar(UPDATE) valores no banco de dados.

Outro detalhe a forma de concatenao da string passada para a varivel $sql, pois valores que no so numricos tem que ser gravados em ' aspas simples, usamos a 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:

14.4. EXERCCIOS PROPOSTOS


1)Como podemos criar uma conexo entre a tecnologia PHP e MYSQL. 2)Escreva uma sequencia de comandos PHP que possa ter a seguinte finalidade: 1-conectar como o servidor localhost, onde o login usurios e a senha 1526. 2-Selecionar a base de dados chamada dados_site. 3-Executar um comando SQL para visualizar todos os dados. Dica: crie uma string com o comando SQL, aps passe a varivel como parmetro para a funo mysql_query(). 5-imprimir todo o contedo do banco com o comando print_r. 3)Em linguagem de programao, como podemos definir a termo CRUD.

Projeto E-jovem - Mdulo II

P"P e M#$%L

142

Projeto E-jovem - Mdulo II

&oomla 1'5

145

Captulo 15. Histria do Joomla


15.1. Introduo
O nome Joomla! tem origem da palavra, em Swahili, Jumla que significa todos juntos. Joomla! (pronuncia-se djumla) um CMS (Content Management System) desenvolvido a partir do Mambo. escrito em PHP e roda no servidor web Apache ou IIS e banco de dados MySQL. Trata-se do resultado da separao entre a equipe de desenvolvedores do Mambo e a empresa Miro, detentora dos direitos sobre o Mambo. A separao ocorreu porque a empresa Miro transferiu o controle do Mambo para uma fundao a Mambo Foundation onde os desenvolvedores teriam apenas uma participao passiva e pouco representativa. Os desenvolvedores, preocupados com a integridade do projeto e com o futuro dos utilizadores, no aceitaram e criaram o Joomla 1.0, tambm open source a partir do cdigo fonte do Mambo 4.5.2. Hoje, mesmo com pouco mais de um ano desde a primeira vers o, o Joomla! o CMS em maior expanso, sendo provavelmente o CMS mais procurado, com a maior comunidade e recursos disponveis. A grande vantagem do Joomla sua diversidade de extenses extras, feitas no necessariamente pelos desenvolvedores do projeto. Componentes, mdulos e plugins so atualizados constantemente e possuem grande valia para profissionais de web interessados em um site bem feito. O Joomla um projeto de cdigo aberto (licena GNU/GPL) e a sua ltima verso estvel a 1.5.XX. No entanto a programao da nova verso 1.6 j se encontra em andamento. Instalar o Joomla relativamente simples e requer apenas conhecimentos bsicos de informtica, sem a necessidade de conhecer nenhuma linguagem de programao. Com um servidor de internet e uma base de dados, possvel obter um site completo, sem erros e seguro.

Joomla Open Source


Exemplo de um software proprietrio e um open source

15.2. Vantagens de utilizar o Joomla!


Dentre os vrios CMS disponveis na web, o Joomla, criado em 2005, est se tornando um dos mais populares, com uma comunidade atuante e crescente. Est fora do escopo deste artigo
Projeto E-jovem - Mdulo II

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

15.3. O Joomla tem como principais caractersticas:


Codigo aberto (Licena GPL); Sistema simples de fluxo de aprovao; Arquivamento para contedo no utilizados (Lixeira); Gerenciamento de banners; Sistema de publicao para o contedo; Sumrio de contedo no formato RSS; Busca otimizada (qualquer palavra registrada); Frontend j traduzido em vrias lnguas; Fcil instalao para novos templates, mdulos e componentes; Hierarquia para grupos de usurios; Estatsticas bsicas de visitantes (existem mdulos mais complexos que podem ser adicionados); Editor de contedo WYSIWYG; Sistema de enquete simples (com acompanhamento de resultado em tempo real); Sistemas de ndices de avaliao; Extenses livres em diversos sites (Mdulos, Componentes, Templates, Tradues).

15.4. Ferramentas CMS Sistema de Gerenciamento de Contedo


As ferramentas CMS (Content Management System) so sistemas gerenciadores de contedo que auxiliam no processo de desenvolvimento de portais web, assim como no processo de gerenciamento do contedo mantido nesses portais. Podemos dizer que um CMS um framework, um esqueleto de website pr -programado, com recursos bsicos e de manuteno e administrao j prontamente disponveis. um sistema que permite a criao, armazenamento e administrao de contedos de forma dinmica, atravs de uma interface de utilizador via Internet.
Projeto E-jovem - Mdulo II

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

Captulo 16. Instalao do Joomla


Para instalar o Joomla no seu micro, antes dever ser instalado um servidor Web (preferencialmente o servidor web Apache), um interpretador PHP e o banco de dados MYSQL, que pode ser feito automaticamente utilizando o XAMPP .

Projeto E-jovem - Mdulo II

&oomla 1'5

14!

16.1. Iniciando os Servidores 16.1.1. Passos para instalao do Joomla

16.1.2. Copiando o Joomla para a Pasta HTDOCS

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

Projeto E-jovem - Mdulo II

&oomla 1'5

149

Captulo 17. Vamos a Instalao


Neste captulo veremos agora passo a passo toda a instalao do Joomla. Baixe a verso mais nova do Joomla! em http://www.joomla.org. Extraia o arquivo na pasta raz do seu servidor web. Assumindo que a instalao est sendo feita na prpria mquina do usurio, digite no browser o endereo http://localhost/. No caso de uma instalao feita num servidor remoto digite o endereo do seu domnio (por exemplo: http://www.seudominio.xxx). Ao acessar o endereo acima, o instalador automaticamente iniciado. A imagem abaixo ilustra a tela do Passo 1.

17.1. 1 Passo - Idiomas


No seu navegador acesse http://localhost/joomla (ou outro nome que voc deu a pasta no diretrio htdocs) Dever aparecer a seguinte tela no seu navegador:

Projeto E-jovem - Mdulo II

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

17.2. 2 Passo Pr-Instalao


Esta tela de verificao de Pr-Instalao do Joomla, verifique se est tudo Ok conforme imagem abaixo e clique em prximo novamente.

17.3. 3 Passo - Licena


Mostra a tela de Licena GNU / GPL

Projeto E-jovem - Mdulo II

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

17.4. 4 Passo Banco de Dados


As seguintes informaes devem ser preenchidas neste passo da instalao: Nome do Servidor quando o banco de dados encontra se no mesmo servidor que o Joomla! o nome do servidor localhost. Nome de Usurio no caso de uma instalao local use o usurio root que o padro de toda instalao do MySQL, no caso de uma instalao num servidor remoto utilize o usurio que foi informado pelo administrador. Senha esta a senha do usurio do banco de dados. Numa instalao padro do MySQL, a senha do usurio em branco no est definida, por tanto deixe esse campo em branco. No caso de uma instalao num servidor remoto utilize a senha que foi informada pelo administrador. Nome do Banco de Dados escolha o nome do banco de dados que o Joomla! Ir criar ou ento utilize o nome do banco de dados que foi fornecido pelo administrador do servidor. Por exemplo: joomla. Conforme figura abaixo:

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

seus valores padres no caso de uma instalao bsica.

17.5. 5 Passo Configurao do FTP


Esta opo somente deve ser configurada caso sua instalao seja feita em um servidor remoto, ou seja, na Internet. Deixe tudo em branco e Clique no boto Prximo para continuar.

17.6. 6 Passo - Configurao


O passo seguinte a Configurao Principal do Joomla!. Os quatro campos seguintes devem ser preenchidos: Nome do site Exemplo: Seu email coloque neste campo o seu email para receber informa es do sistema. Caso sua senha seja recuperada, ela ser enviada para o email aqui preenchido, portanto, coloque um email vlido. Senha do admin insira a senha de sua preferncia para o usurio administrador do site. Confirme a senha do admin repita a senha inserida no campo anterior. Clique no boto Prximo para ir ao ltimo passo da instalao.

Projeto E-jovem - Mdulo II

&oomla 1'5

153

17.7. 7 Passo - Fim


O Passo 7 somente exibe uma tela de confirmao de instalao do Joomla! e um aviso para remover o diretrio /installation. Este diretrio deve ser deletado, somente aps sua excluso que possvel acessar o novo site.

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.

Projeto E-jovem - Mdulo II

&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/

Captulo 18. Frontend e Backend


Quando instalamos o Joomla em um servidor web, automaticamente s o instaladas duas reas: rea de usurios (Frontend) e rea de administrao (Backend), que correspondem respectivamente, ao site principal e um site de administrao do site principal.

18.1. Frontend rea de Usurios


O Frontend um site normal na web, com a diferena que podemos alterar partes de seu contedo diretamente no site. Este, como qualquer site web, est acessvel para todos os usurios. 1. Pode-se criar um template (Design) prprio para apresentao das informaes; 2. Utilizar um template gratuito disponvel pela comunidade Joomla; 3. Adequar um site para ter seu contedo mantido com os recursos do Joomla.

Projeto E-jovem - Mdulo II

&oomla 1'5

155

18.2. Backend rea de Administradores


Este um site que permite a administrao do site principal em relao ao seu contedo. nesta rea onde informamos as partes que iro aparecer no site principal (Mdulos, componentes, etc.), como por exemplo, menu de opes, notcias, reas de registros, links, download de arquivos, etc. Basicamente a rea de administrao abre exibindo o Painel de Controle e um menu superior. Os itens a serem exibidos no menu e no painel de controle depender o de como est definido o seu nvel de usurio para rea de administrao.

18.2.1. Login de Acesso


Para acessar a rea de administrao, devemos fazer o login na mesma, digitando no navegador o endereo do site, incluindo no final a palavra administrator. Ex.: http://localhost/seusite/administrator

Projeto E-jovem - Mdulo II

&oomla 1'5

156

18.2.2. Nvel de usurio Papel


Cada usurio que acessa o site principal ou de administra o possui um papel. Dependendo deste papel, o usurio poder fazer mais ou menos aes/atividades, tanto no site quanto na rea de administrao.

18.2.3. Papis no Site principal (Frontend)

Anonymous

Registered

Autor

Editor

Publisher.

Obs.: Os usurios do frontend no possuem acesso ao backend.

18.2.4. Papeis na rea de administrao (BackEnd)

Manager

Administrator

Super Administrator.

Obs.: Todos os usurio do BackEnd possuem acesso total tambm ao frontend.

Captulo 19. Conhecendo a rea de Administrao


O Joomla, por ser um sistema de gerenciamento de conte do genrico, precisa utilizar um forma de organizar o contedo do site que se adapte a diversas estruturas e situa es. Em seguida, iremos descrever os principais tipos de contedo suportados pelo Joomla, e a organizao de cada um deles.

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.

19.2. Registrando os usurios


Os administradores so responsveis pelo registro de usurios, mas voc pode permitir que
Projeto E-jovem - Mdulo II

&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.3. Categorias de Usurios Registrados


Os usurios registrados dividem-se em duas categorias principais: os que ir o trabalhar principalmente com o contedo do site, que realizam suas tarefas, atrav s da interface do Portal, aps terem se logado; e os que iro trabalhar na administrao do site, utilizando a Interface de Administrao, acessvel pela pasta/administrator.

19.4. Usurios Responsveis pelo Contedo


As categorias listadas esto organizadas pelo grau de acesso s funes do Joomla.

19.4.1. Usurio Registrado.


No pode inserir contedo no site, mas possui acesso, como leitor, s sees reservadas para usurios cadastrados.

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.

19.4.4. Publicador (publisher)


Pode autorizar a publicao de material enviado pelos Autores ou Editores, e tamb m pode alterar qualquer item do site.

Projeto E-jovem - Mdulo II

&oomla 1'5

15!

19.5. Usurios de Administrao.


Esses usurios realizam as tarefas de administra o atravs da Interface de Administrao, acessvel no endereo url do site/administrator. Entre as suas atividades, est o: o cadastramento de usurios, criao das sees do site e instalao de mdulos e componentes, bem como a escolha do template (que define o visual do site) e do idioma do site.

19.5.1. Super Administrador


Tem acesso a todas as funes de administrao do site. Pode criar e deletar outros usurios, inclusive os Administradores e Gerenciadores.

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.

19.5.3. Gerenciador (Manager)


Utilizado por aqueles que precisam gerenciar o conte do do site, mas que no precisam ter acesso s funes de criao e gerenciamento de usurios. Os Gerenciadores apresentam as seguintes restries, em relao aos Administradores:

Gerenciar usurios; Instalar mdulos e componentes; Restries de acesso a alguns componentes.

Captulo 20. Gerenciando as Categorias e Sees


Para editar um texto do site, voc ter que identificar o que o texto que voc quer editar, ou seja, se ele um item, ou a descrio de uma categoria ou de uma seo. Apenas itens podem ser editadas dentro do prprio site; descries de categorias e de sees s podem ser editadas no Painel de Administrao. Primeiro voc deve criar uma seo para o determinado contedo; Segundo voc cria a categoria da seo. Exemplo: Seo: Notcia / Categoria: Ultimas Notcias

Projeto E-jovem - Mdulo II

&oomla 1'5

159

20.1. Como criar uma Seo


Para criar uma seo de contedo no Joomla, siga os seguintes passos:

Logue-se no Painel de Administrao; Clique em Contedo -> Administra Seo.

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)

Quando estiver ponto, clique em Salvar.

Projeto E-jovem - Mdulo II

&oomla 1'5

160

20.2. Como criar uma categoria


1.Logue-se no Painel de Administrao; 2.Clique em Contedo -> Administra Categoria. 3.Siga todos os passos da seo, lembrando agora que temos que setar a seo.

Observao: veja que vai aparecer um campo para voc especificar a seo que foi criada anteriormente.

Captulo 21. Inserindo um Novo Texto


Se o seu site utilizar o modo Tabelas (e no Blogs) para exibir o contedo, voc poder inserir novos textos pelo prprio site, sem precisar acessar o Painel de Administrao. Caso o seu site utilize Blogs, voc dever se logar no Painel de Administrao, e seguir as instrues abaixo, reparando nas observaes.

21.1. Para inserir um texto, siga os seguintes passos:

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.

Aps terminar toda a configurao, pode salv-lo.

Captulo 22. Como criar um link no menu para um item de contedo


Para criar um link num menu para um item de conte do (um texto) no seu site, voc deve primeiro decidir em que menu ser criado o link. O Joomla permite ao seu site ter v rios menus, sendo que alguns podem ser exibidos em apenas algumas p ginas, e outros podem estar presentes em todas as pginas (as pginas em que um menu est ou no presente podem ser configuradas).

22.1. Criando um link para o item de contedo


Sabendo em que menu deseja incluir o link, os procedimentos s o os que seguem. Para este exemplo, vamos incluir um link no menu principal de um site criado com o Joomla.

Logue-se no Painel de Administrao; No menu Menu, escolha o menu onde deseja incluir o link. No nosso caso, o mainmenu.

Projeto E-jovem - Mdulo II

&oomla 1'5

162

Ser exibida uma lista com os links atualmente existentes no menu;

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.

Projeto E-jovem - Mdulo II

&oomla 1'5

163

22.2. Administrao dos menus


importante observar que, normalmente um site desenvolvido com o Joomla possui diversos menus, bem como outros instrumentos de navegao.

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.

22.2.1. Tela de configurao de menus


Nessa tela encontramos os seguinte itens: 1. Item de menu: O nome do menu e suas especificaes; 2. Publicado: Se o menu ser publicado ou no na pgina; 3. Reordenar: Com as cetas para cima e para baixo, podemos ordenar a posi o do menu; 4. Ordem salvar: Podemos colocar a numerao de ordem manual e salvar; 5. Acesso: Definio de acessos pblicos ou privados; 6. Item ID: Nmero de identificao do menu; 7. Tipo:Tipo de link em que o menu foi adicionado; 8. CID: Nmero identificador do contedo.

Projeto E-jovem - Mdulo II

&oomla 1'5

164

22.3. Especificao de Alguns Itens de Menu 22.3.1. Contedo


1. Blog - Arquivo de Contedo da Categoria: Exibe uma lista de artigos arquivados numa categoria especfica; 2. Blog - Arquivo de Contedo da Seo: Exibe uma lista de artigos arquivados numa seo especfica; 3. Blog - Categoria de Contedo: Exibe uma pgina de itens de contedo de mltiplas categorias em formato de BLOG; 4. Blog - Seo de Contedo: Exibe uma pgina de itens de contedo de mltiplas sees em formato de BLOG; 5. Enviar Contedo: Cria um boto enviar para os usurios enviarem contedos; 6. Link - Contedo Esttico: Cria um link a um item de contedo estatstico; 7. Link - Item de Contedo: Cria um link do item de contedo estatstico publicado com visualizao completa; 8. Tabela - Categoria de Contedo: Exibe uma tabela com os artigos de uma categoria especfica; 9. Tabela - Contedo de Seo: Cria uma listagem de categoria de contedo de uma seo especfica.

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

Captulo 23. Administrao de Mdia


Essa rea do painel especfica para administrao de arquivos e imagens, sua configurao est apontada para pasta IMAGES da estrutura do site. Nela, podemos
Projeto E-jovem - Mdulo II

&oomla 1'5

165

baixar arquivos e imagens fazendo upload do nosso prprio PC.

23.1. Observando a imagem acima, teremos os seguintes tpicos: 23.1.1. Primeiro tpico
1. 2. 3. 4. Enviar; Criar; Cancelar; Ajuda.

23.1.2. Segundo tpico

Criar Diretrio: Local onde definido o nome da pasta ou diretrio que ser criado.

23.1.3. Terceiro tpico


1. Imagem / Url Cdigo: exibido o caminho do arquivo ou imagem quando selecionado.

23.1.4. Quarto tpico


1. Diretrio: Voc seleciona o nvel do diretrio.

23.1.5. Quinto tpico


1. Procurar: Local utilizado para localizar o arquivo que ser feito o upload.

23.1.6. Sexto tpico


1. Pastas e Arquivos: rea onde exibido todo contedo que est armazenado.

Captulo 24. Conhecendo alguns 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!

24.1. Componente Weblinks


O componente Web Links permite gerenciar a rea de links do site. O Joomla oferece a possibilidade de se criar, facilmente, uma seo de links para o seu site. Esses links podem ser agrupados em categorias, de forma que voc pode separ-los por assunto. Por exemplo, o site de uma escola poderia ter como categorias de links: Materiais para Professores, Sites para Adolescentes, Sites para os Pais, etc.
Projeto E-jovem - Mdulo II

&oomla 1'5

166

Primeiro, criam-se as categorias.

Segundo, criam-se os itens.

1. Administram-se os itens.

24.2. Componente Contatos


Os contatos so utilizados para a implementao da seo Fale Conosco/Contato, presente nos sites atuais. Voc pode criar diversos contatos (dependendo do interesse do usu rio, voc pode querer encaminh-lo para um contato diferente), que so agrupados em categorias. Ao criar um item de menu que leve seo Contatos, voc poder escolher se quer exibir um contato especfico, ou a lista de contatos disponveis. Para comearmos a trabalhar com os contatos, precisamos estabelecer primeiro a categoria dos contatos que sero cadastrados.
Projeto E-jovem - Mdulo II

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

Projeto E-jovem - Mdulo II

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

24.3. Componente Banner


possvel criar diversos avisos/banners, e pedir ao sistema que sorteie um dos avisos/ banners disponveis, exibindo-o no site. Um novo item sorteada cada vez que a pgina carregada. Para publicao dos banners, segue-se os mesmos passos dos outros componentes j vistos, criando-se primeiro sua categoria e depois o prprio banner que ser administrado.

Projeto E-jovem - Mdulo II

&oomla 1'5

169

Captulo 25. Mdulos e Componentes


Um mdulo uma extenso pequena e flexvel usada para compor uma pgina. Os mdulos so usados em pequenas reas da pgina e podem ser associados a diversos componentes. Alguns exemplos so os menus, o formulrio de login, visitantes online e outros tantos que so instalados por padro junto com o Joomla.

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.

Projeto E-jovem - Mdulo II

&oomla 1'5

1 0

25.1. Criando um mdulo utilizando o prprio Joomla


Podemos criar um mdulo utilizando as prprias ferramentas do Joomla, neste caso, abrimos o administrador de mdulo e utilizamos a opo NOVO no menu.

25.1.1. Veja os pontos necessrios para criao de um mdulo:


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.

25.2. Instalao de Mdulos


Existem vrios mdulos j prontos que podem ser encontrados na internet, mdulos com diversas finalidades como: galerias de fotos, newslatter, login etc.

25.2.1. Passos para instalar um novo mdulo:


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.

Projeto E-jovem - Mdulo II

&oomla 1'5

1 2

Captulo 26. Estrutura.


O Joomla divide-se na seguinte estrutura.

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.

26.3. Contedo MySQL


Banco de dados mysql, podemos acess-lo pelo localhost e editar as tabelas, normalmente o
Projeto E-jovem - Mdulo II

&oomla 1'5

1 3

Joomla cria suas tabelas com extenses de prefixo _JOS.

26.4. Posies de Mdulos


Todo o tema est estruturado por posies onde cada mdulo ser apontado. As posies so feitas no cdigo PHP do arquivo principal do Tema (index.php), e depois classificadas dentro do Painel de Administrao, para que possam ser reconhecidas.

26.4.1. Vejamos exemplo no Cdigo PHP:

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 .

26.4.2. Vejamos agora o exemplo no Painel de Administrao (BackEnd)


P o s i e s le f t e b a n n e r V e j a a s m e s m a s p o s i o c r ia d a d o P a in e l d e A d m in is t r a o

Observao: Sempre que criarmos uma nova posio dentro do cdigo, no podemos esquecer de tambm cri-la no Painel de Administrao.

26.5. Estendendo a Estrutura do Template (Tema)


Vejamos alguns cdigos do php abaixo para entender melhor a formatao da template.

26.5.1. Voc pode usar os seguintes atributos para os mdulos:


<?php mosLoadModules('top'); ?> A leitura desse cdigo seria algo assim: Aparecer os mdulos que esto na posio top; <?php mosLoadModules('top',); ?>
Projeto E-jovem - Mdulo II

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

Projeto E-jovem - Mdulo II

&oomla 1'5

1 5

Veja o modelo abaixo:

Projeto E-jovem - Mdulo II

&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

Projeto E-jovem - Mdulo II

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