UNIVERSIDADE FEDERAL DE SANTA CATARINA
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO
Luciana Graever de Medeiros Sabrina Schürhaus
SISTEMA DE GERENCIAMENTO DE AVALIAÇÕES
Trabalho de conclusão de curso apresentado como parte dos requisitos
para obtenção do grau de Bacharel em Ciências da Computação
Prof. Dr. Vitório Bruno Mazzola Orientador
Profa. Dra. Lúcia Helena Martins Pacheco Co-Orientadora
Florianópolis – SC 2005/1
SISTEMA DE GERENCIAMENTO DE AVALIAÇÕES
Luciana Graever de Medeiros
Sabrina Schürhaus
________________________________ Prof. Dr. José Mazzucco Júnior
Coordenador do Curso
Banca Examinadora:
________________________________ Prof. Dr. Vitório Bruno Mazzola
Orientador
________________________________ Profa. Dra. Lúcia H. Martins Pacheco
Co-Orientadora
________________________________ Prof. Dr. Roberto Willrich
________________________________ Gisele F. Pellegrini
DEDICATÓRIA
Luciana
D edico este trabalho aos meus queridos pais
H elena e Francisco e ao m eu filho Felipe.
Sabrina
È com m uita gratidão que dedico este trabalho
aos meus pais, H aroldo e Cida. Eles que antes da
formação acadêmica me ofereceram a base para que
eu pudesse chegar até aqui. Foram eles que me
deram a formação como ser humano. Tam bém não
poderia deixar de dedicar este trabalho a minha
avó, M atilde, carinhosamente chamada de Tila.
Ela que na sua simplicidade e humildade sempre
me deu força e sabedoria para que eu continuasse
apesar das dificuldades. Ela é, sem duvidas, o meu
maior exemplo de ser humano, a quem eu sempre
vou procurar tomar por m odelo.
AGRADECIMENTOS
Luciana
Agradeço ao meu filho, pela compreensão nos
muitos dias em que eu estive ausente estudando e
desenvolvendo este trabalho, e não pude lhe dar
atenção.
Aos meus pais, por tornarem possível meus
estudos e minha form atura.
Ao D aniel, por toda a ajuda durante o período
de estudos e pelo desenvolvimento do layout das
telas do SG A.
À Professora Lúcia e ao Professor Vitório pela
ajuda e pelo incentivo neste projeto.
À
minha
parceira
Sabrina,
pelo
companheirismo durante a faculdade e na
realização deste trabalho.
Sabrina
Agradeço ao m eu com panheiro, Carlos pela sua
paciência. Aos meus pais e meus irmãos pela
compreensão nos momentos de stress. Agradeço ao
D aniel pelo seu apoio técnico na construção do
layout das páginas. A Lúcia pelo auxilio na teoria
de Avaliações e ao nosso Orientador, Vitório.
Agradeço ainda a minha colega Luciana, pela
compreensão nos momentos de aflição que
antecederam a entrega do TCC e pela sua parceria
no desenvolvimento deste trabalho.
SUMÁRIO
LISTA DE ABREVIATURAS... 8 LISTA DE FIGURAS ... 9 LISTA DE TABELAS ... 10 RESUMO ... 11 ABSTRACT ... 12 INTRODUÇÃO ... 13 1. APRESENTAÇÃO ... 15 1.1. Objetivos... 15 1.2. Justificativa ... 15 1.3. Organização do Trabalho ... 162. TEORIA SOBRE AVALIAÇÕES ... 18
2.1. Currículo, Instrução e Avaliação ... 18
2.2. Objetivos da Avaliação ... 19
2.3. Aspectos para o Desenvolvimento de Avaliações ... 20
2.4. Avaliações Eletrônicas... 21
2.4.1. Informatização das Instituições de Ensino... 21
2.4.2. Problemas Relacionados... 22
3. PROGRAMANDO EM AMBIENTE WEB ... 23
3.1. Falhas do HTML ... 23
3.1.1. Páginas HTML ... 23
3.1.2. Páginas PHP ... 24
3.2. Tecnologias Dinâmicas com Execução no Lado do Cliente ... 26
3.1.1 Controles ActiveX ... 26
3.1.1 Java Applets ... 26
3.1.1 Script do Lado Cliente e HTML Dinâmica (DHTML) ... 27
3.3. Tecnologias Dinâmicas com Execução do Lado do Servidor ... 27
3.3.1. Common Gateway Interface – CGI... 27
3.3.2. APIs Proprietárias de Servidores Web (ISAPI, NSAPI) ... 28
3.3.3. Active Server Page – ASP... 28
3.3.5. Java Servlets e JSP... 29
3.3.6. Hypertext Preprocessor – PHP... 30
3.4. Vantagens das Tecnologias Dinâmicas com Execução do Lado do Servidor 30 4. PHP HIPERTEXT PREPROCESSOR ... 31 4.1. A História do PHP ... 32 4.1.1. PHP/FI ... 32 4.1.2. PHP 3 ... 33 4.1.3. PHP 4 ... 34 4.1.4. PHP 5 ... 34 4.2. Estimativas de Uso do PHP... 35 4.3. Introdução à Linguagem PHP... 35
4.3.1. Valores Literais Numéricos e Alfanuméricos ... 38
4.3.2. Constantes PHP ... 39 4.3.3. Variáveis PHP ... 42 4.3.4. Estruturas de Controle... 43 4.3.5. Funções... 44 4.3.6. Classes... 45 4.4. O PHPTriad ... 46 4.4.1. Apache ... 47 4.4.2. MySQL... 47 4.4.3. PHP ... 48
5. DESENVOLVIMENTO DO SISTEMA DE GERENCIAMENTO DE AVALIAÇÕES ... 49 5.1. Visão do Sistema ... 49 5.2. Metodologia de Desenvolvimento... 52 5.3. Levantamento de Requisitos ... 55 5.4. Requisitos Funcionais... 55 5.5. Requisitos Não-Funcionais ... 79
5.6. Diagrama das Páginas do Sistema... 80
5.7. Projeto do Banco de Dados do SGA ... 81
5.7.1. Conceitos Básicos ... 81
5.7.2. Construindo o Modelo ER... 82
5.7.4. Implementação Inicial de Entidades ... 87
5.7.5. Implementação de Generalização/Especialização ... 88
5.7.6. Implementação de Relacionamentos ... 89
5.7.7. Criação da Tabela de Usuários do Sistema ... 90
5.8. Implementação de um Protótipo do SGA... 92
CONCLUSÃO... 103
TRABALHOS FUTUROS ... 105
REFERÊNCIAS BIBLIOGRÁFICAS ... 106
ANEXO 1 – CASOS DE USO DO ADMINISTRADOR ... 108
ANEXO 2 – DIAGRAMA ENTIDADE/RELACIONAMENTO ... 127
ANEXO 3 – MODELAGEM LÓGICA DO BANCO DE DADOS ... 128
ANEXO 4 – SCRIPTS DO BANCO DE DADOS ... 134
ANEXO 5 – CÓDIGO FONTE DO SGA ... 183
LISTA DE ABREVIATURAS
API Applications Programming Interface
ASP Active Server Page
BD Banco de Dados
CASE Computer Aided Software Engineering
CGI Common Gateway Interface
EJB Enterprise Java Beans
HTML Learning Hypertext Markup Language
HTTP HyperText Transfer Protocol
IIS Internet Information Server
ISAPI Internet Server API
JSP Java Server Page
JVM Java Virtual Machine
NSAPI Netscape Server API
PHP Hypertext Preprocessor
PWS Personal Web Server
RUP Rational Unified Process
SGA Sistema de Gerenciamento de Avaliações SGBD Sistema de Gerenciamento de Banco de Dados UML Unified Modeling Language
LISTA DE FIGURAS
Figura 1 – Servidor Web ... 24
Figura 2 – Servidor PHP ... 25
Figura 3 - Gráfico do Uso de PHP ... 35
Figura 4 – Página Resultante da Execução do Script PHP ... 37
Figura 5 – Exibição da Data e Hora em uma Página HTML ... 38
Figura 6 – Casos de Uso do Professor ... 58
Figura 7 – Casos de Uso do Aluno ... 76
Figura 8 – Árvore Resumida das Páginas do SGA ... 80
Figura 9 – Página Inicial do SGA... 93
Figura 10 – Página Principal do Professor... 94
Figura 11 – Cadastro de Questões... 95
Figura 12 – Cadastro de Questões Objetivas ... 96
Figura 13 – Cadastro de Questões Discursivas... 97
Figura 14 – Seleção de Disciplina da Avaliação ... 98
Figura 15 - Entrada de Dados da Avaliação ... 99
Figura 16 - Elaborando Avaliação Automaticamente ... 100
Figura 17- Elaborando Avaliação Manualmente ... 101
Figura 18 - Página Principal do Aluno ... 102
LISTA DE TABELAS
Tabela 1 – Constantes PHP ... 40
Tabela 2 – Operadores Aritméticos do PHP ... 40
Tabela 3 – Operadores de Atribuição do PHP... 41
Tabela 4 – Operadores Binários do PHP... 41
Tabela 5 – Operadores Lógicos do PHP ... 41
Tabela 6 – Operadores de Comparação do PHP ... 41
RESUMO
O processo de avaliações atualmente conta com a disponibilidade de recursos computacionais que permitem automatizá-los. Esta automatização, além de agilizar a submissão das avaliações por quem é avaliado e a correção pelo avaliador, também facilita o processamento dos dados para a realização de análise do processo de avaliação numa visão mais ampla.
Neste trabalho, apresentamos uma proposta de sistema para gerenciamento de avaliações, o SGA, que automatiza o processo de avaliação no sistema acadêmico. O SGA foi desenvolvido usando tecnologias para programação web, mais especificamente em linguagem PHP e banco de dados MySQL.
No processo de desenvolvimento do SGA, procuramos utilizar todos os conceitos aprendidos no curso para o desenvolvimento de sistemas computacionais. Por exemplo, a explorações das técnicas para levantamento de requisitos, como a descrição dos casos de uso para compreender e descrever os requisitos do sistema, o projeto e modelagem do banco de dados usando diagrama entidade/ relacionamento e técnicas de normalizações para evitar redundâncias, entre outros conceitos.
ABSTRACT
The process of evaluations currently counts on the availability of computational resources to automatize them. This automatization, besides speeding the submission of the evaluations for who is evaluated and the correction for the appraiser, also facilitates the data processing for the accomplishment of analysis of the process of evaluation in a broad vision.
In this work, we present a proposal of system for management of assesment, the SGA, that automatizes the evaluation process. The SGA was developed using technologies for web programming, more specifically the language PHP and MySQL database.
In the process of development of the SGA, we look for to use all the concepts learned in the course for the development of computational systems. For example, the explorations of the techniques for survey of requirements, as the description of the use cases to understand and to describe the requirements of the system, the project and modeling of the database using entity relationship diagram and techniques of normalization to prevent redundancies, among others concepts.
INTRODUÇÃO
O conceito de avaliação sempre esteve presente no cotidiano acadêmico e, atualmente, com a expansão dos sistemas de informação e da Internet, em várias outras situações, além da tradicional existência no meio acadêmico. Por exemplo, avaliações estão presentes na prestação de testes de seleção de estagiários e
trainees em empresas multinacionais por meio de avaliações eletrônicas e também
em sistemas de ensino a distância.
Desta forma, vê-se a necessidade de que as ferramentas de avaliação acompanhem o advento tecnológico atual, possibilitando a sua automatização, sem que se perca a sua confiabilidade e eficiência na mensuração do conhecimento. No entanto, surge aí um grande desafio.
Avaliação é a inferência e a mensuração do conhecimento de um determinado conteúdo adquirido por um indivíduo [Pellegrino, 2002]. Sendo assim, o desafio está em automatizar este processo inerentemente abstrato sem que a avaliação perca sua qualidade e sua confiabilidade.
Neste trabalho apresentamos a proposta de um sistema automatizado de avaliações, chamado de Sistema de Gerenciamento de Avaliações – SGA. O SGA foi construído sobre as tecnologias para programação na web, mais especificamente utilizando a linguagem de programação para web PHP, e utilizando o sistema de gerenciamento de banco de dados MySQL. O desenvolvimento deste trabalho nos permitiu utilizar na prática os conhecimentos adquiridos durante o curso para o processo de desenvolvimento de sistemas computacionais.
1. APRESENTAÇÃO
1.1. Objetivos
O objetivo do trabalho é projetar uma ferramenta de gerenciamento e submissão de avaliações que automatize a tarefa de verificação do domínio de conteúdos por parte dos alunos e também a correção das avaliações por parte dos professores. A ferramenta deve possibilitar resultados imediatos e facilitar a análise destes. Ela poderá ser usada no ensino regular, bem como em sistemas de ensino a distância ou em qualquer outro sistema que necessite integrar o emprego de avaliações. Apresentaremos um protótipo do SGA com as principais funcionalidades implementadas.
O objetivo principal do trabalho consiste na utilização prática dos conceitos absorvidos ao longo do curso de graduação em Ciências da Computação na elaboração do projeto. Nosso foco é a busca pelo desenvolvimento de software com qualidade, independente da sua complexidade, e para isto recorremos a todos os subsídios e recursos que nos foram oferecidos durante o curso.
1.2. Justificativa
As avaliações no sistema de ensino fundamental, médio e superior deveriam ter a finalidade de verificação do domínio de conteúdos pelo aluno. No entanto, esta finalidade acaba sendo distorcida e adquire um sentido pejorativo. Isto porque os alunos colocam mais ênfase em tirar um alto conceito na avaliação do que na preocupação com evolução do seu conhecimento. A avaliação deveria ser uma forma de autoverificação do conhecimento pelo aluno sobre o conteúdo que está sendo explorado. Desta forma, ele poderia analisar suas falhas, identificar como está
a sua evolução e em quais pontos ele precisa melhorar. Já para os professores, a correção do resultado das avaliações é uma tarefa maçante, demorada e monótona. Esta energia poderia ser usada em tarefas produtivas, como, por exemplo, a análise da avaliação em si, a obtenção do desempenho geral da turma, mudança na forma do trabalho em função dos resultados obtidos, orientação aos alunos etc.
Neste sentido, a ferramenta a qual nos propomos especificar visa satisfazer estas necessidades, buscando facilitar a aplicação de avaliações, de modo geral no ensino regular, e também em sistemas de ensino a distância.
As primeiras idéias de avaliação da aprendizagem estavam vinculadas ao conceito de medidas [PELLEGRINO, 2002]. No entanto, hoje, sabe-se que nem sempre esta forma de avaliação do conhecimento é a melhor. Tanto que já existem muitas instituições de ensino no exterior, e até mesmo aqui no Brasil, por exemplo, o CEFET-UnED/São José – SC, que implantaram o sistema de avaliações por habilidades e competências. Neste tipo de sistema, não existe a avaliação por atributos numéricos que expressam os resultados numa escala de graus de 0 a 10, mas sim a verificação do conhecimento por análise da aptidão de competências pré-estabelecidas para cada disciplina.
Porém, mesmo nas medidas educacionais tradicionais existe a necessidade de refinamento das técnicas utilizadas [PELLEGRINO, 2002].
1.3. Organização do Trabalho
Este trabalho está organizado e subdividido da seguinte forma:
O Capítulo 2 trata dos conceitos relacionados às avaliações, como seu papel no sistema educacional, seus objetivos e resultados de interesse tanto dos professores quanto dos alunos e as principais características a serem seguidas quando são desenvolvidas. Neste capitulo também são apresentadas algumas questões relacionadas às avaliações eletrônicas, seu uso atual, seus problemas e seus desafios.
O Capítulo 3 apresenta as tecnologias de aplicações web mais utilizadas atualmente, descrevendo suas características, vantagens e desvantagens, disponibilidades e outros.
O Capítulo 4 consiste em uma introdução à linguagem PHP, contendo suas características, sua história e uma breve introdução aos conceitos da linguagem.
No Capítulo 5 são apresentadas as características do sistema proposto. É mostrado com uma visão geral do sistema, e em seguida a descrição do processo e a metodologia de desenvolvimento que foi utilizada e as etapas que foram seguidas.
2. TEORIA SOBRE AVALIAÇÕES
2.1. Currículo, Instrução e Avaliação
Segundo [Pellegrino,2002], três aspectos são centrais no sistema educacional: currículo, instrução e avaliação. Estes três elementos estão conectados, apesar da natureza da sua ligação e influência recíproca serem geralmente menos explícitas do que deveriam ser.
Currículo consiste no conhecimento e habilidades na matéria em questão que os professores ensinam e os alunos supostamente aprendem. O currículo normalmente consiste de certa quantidade de assuntos em uma área estabelecida e uma seqüência de aprendizado.
Instrução refere-se aos métodos de ensinamento e as atividades de aprendizado utilizadas para ajudar os estudantes a dominar o conteúdo e os objetivos especificados no currículo. A instrução abrange tanto as atividades dos professores quanto à dos alunos. Ela pode ser realizada por vários métodos e seqüências de atividades.
Avaliação é o meio utilizado para medir os resultados da educação e o conhecimento dos estudantes considerando as competências importantes. As avaliações podem incluir métodos formais, como as tradicionais provas, ou menos formais, tais como testes, projetos e perguntas do professor.
A prática educacional necessita do alinhamento entre currículo, instrução e avaliação. Alinhamento, neste sentido, significa os três aspectos estarem direcionados aos mesmos fins e reforçando uns aos outros ao invés de trabalharem com objetivos diferentes. Idealmente, uma avaliação deveria medir o que os estudantes estão realmente sendo ensinados, e o que está sendo ensinado deve
coincidir com o currículo que os alunos devem dominar. Se qualquer dos elementos estiver distorcido, isto irá desbalancear o processo educacional. Os resultados das avaliações serão inúteis, ou a instrução será ineficiente. Porém, este alinhamento é difícil de ser obtido [Pellegrino,2002].
2.2. Objetivos da Avaliação
Professores avaliam os alunos para descobrir o que eles sabem e podem fazer, mas avaliações não oferecem um caminho para a mente do estudante. Os resultados educacionais das avaliações não são diretos como medir peso ou altura: os atributos a serem medidos são representações mentais e processos que não podem ser vistos externamente. Assim, uma avaliação é uma ferramenta projetada para observar o comportamento dos estudantes e produzir dados que poderão ser utilizados para extrair inferências razoáveis sobre o que os estudantes sabem [Pellegrino,2002]. Decidir o que avaliar não é tão simples quanto parece.
O papel da avaliação deve ser expandido para além do tradicional conceito de testar. Ambientes de aprendizado eficazes são centrados nas avaliações, pois a aplicação de freqüentes avaliações de formação faz com que os estudantes pensem claramente. Isto permite que o professor e o estudante monitorem o progresso.
As avaliações devem testar o entendimento profundo do domínio e não somente o conhecimento supérfluo. O entendimento profundo do domínio caracteriza-se por evidências de um entendimento da organização conceitual e relacionamentos conceituais assim como a habilidade de aplicar o conhecimento de um determinado assunto, ao invés de conhecimento supérfluo de conhecimento desconectado baseado na memorização de um assunto [Pellegrino,2002].
É fundamental distinguir-se avaliação de nota. A nota obtida em uma avaliação consiste de um número, conceito ou menção e tem como objetivo atender a exigências formais do sistema educacional. Já avaliação é a verificação do domínio de um determinado assunto por meio de evidências [Pellegrino,2002].
2.3. Aspectos para o Desenvolvimento de Avaliações
As principais características que o desenvolvimento de um método de avaliação exige estão descritas a seguir [Pellegrino, 2002].
Abrangência
Determina o nível de cobertura dos assuntos relacionados no currículo. Avaliações podem ter diferentes níveis de abrangência, dependendo do seu objetivo.
Clareza
A clareza de um método de avaliação corresponde ao modo como as questões são descritas, e está relacionado ao entendimento e interpretação que o aluno terá quando da realização da avaliação. É importante formular as questões e atividades com grande clareza para evitar possíveis ambigüidades e interpretação equivocada do objetivo da questão.
Mensuração
A mensuração consiste na definição de um resultado quantitativo da avaliação, seja por meio de notas ou conceitos. A mensuração é fundamental no processo educacional, pois é a partir dela que será estabelecida a aprovação ou reprovação do aluno na disciplina em questão.
Ponderação
A ponderação determina a atribuição de diferentes pesos às questões e atividades de uma avaliação, e é estabelecida pelo professor de acordo com a complexidade e importância do assunto a ser avaliado.
Precisão Lógica
A precisão lógica corresponde à consistência do método de avaliação. Os objetivos educacionais devem ser plenamente atendidos e a avaliação deve se ater a estes objetivos.
Precisão Temporal
A precisão temporal consiste na atribuição temporal de limites para a realização das questões e atividades propostas na avaliação. Deve ser bem elaborada para permitir a adequada realização das tarefas pelos alunos.
2.4. Avaliações Eletrônicas
2.4.1.
Informatização das Instituições de Ensino
A informática e seus recursos são um novo paradigma para o sistema educacional e sua potencialidade é grande. O uso do computador está transformando a vida dos estudantes e professores nas instituições de ensino de todo o mundo. Os computadores, a Internet e as inovações digitais auxiliam a criatividade e ampliam as atividades e currículo de muitas disciplinas, tornando-as mais dinâmicas e interessantes e menos monótonas. Softwares educativos propiciam um aumento na motivação do aluno e permitem a realização de atividades que seriam impossíveis de serem realizadas sem o computador.
Com a tecnologia digital sendo cada vez mais utilizada nas instituições de ensino, pode-se pensar em avaliações eletrônica em detrimento às tradicionais avaliações manuscritas e nos computadores como ferramentas de suporte ao professor na elaboração, correção e verificação da evolução dos alunos.
2.4.2.
Problemas Relacionados
Os principais problemas relacionados à avaliação eletrônica são causados quando a realização da avaliação é não-presencial, necessitando de segurança para garantir sua idoneidade.
É fundamental garantir a autenticação da avaliação, tanto do aluno que está realizando a avaliação quanto do professor que a está aplicando. Isto evita possíveis fraudes. Além disso, deve-se garantir a integridade dos dados, para impedir que a avaliação seja alterada antes ou depois da sua realização. O não-repúdio garante que o estudante que fez a avaliação não possa negar sua realização, e a instituição não negue sua aplicação. A justiça garante que todos os estudantes sejam avaliados sobre o mesmo conteúdo e com o mesmo nível de dificuldade, seja com avaliações idênticas ou com questões e tarefas diferenciadas. Finalmente, a privacidade garante que o conteúdo da avaliação seja sigiloso até o momento de sua aplicação.
3. PROGRAMANDO EM AMBIENTE WEB
3.1. Falhas do HTML
Muitas páginas web possuem conteúdo estático, como artigos acadêmicos, livros etc. As páginas destes sites são documentos constituídos de texto simples, imagens e hyperlinks para outros documentos. Para este tipo de web sites, simples tecnologias no lado do cliente geralmente são suficientes. HTML e o estilo cascata de páginas oferecem os mecanismos suficientes para estruturar e apresentar o conteúdo das páginas.
No entanto, a Internet e as Intranets são usadas para aplicações, e muitas destas incorporam o uso de bancos de dados. Estes sites e estas aplicações são dinâmicos, porque o conteúdo varia de acordo com os dados envolvidos e as ações do usuário. O PHP, assim como outras tecnologias, permitem criar aplicações potentes que interajam com banco de dados e criem conteúdo dinamicamente [CASTAGNETTO, 1999].
3.1.1.
Páginas HTML
Quando uma requisição para uma página é iniciada pelo navegador, o servidor web executa três passos:
1. Lê a requisição vinda do navegador (HTTP Request). 2. Localiza a página no servidor.
3. Envia a página pela Internet (ou intranet) para o navegador (HTTP
A Figura 1 ilustra este procedimento.
Figura 1 – Servidor Web
3.1.2.
Páginas PHP
O uso da linguagem de scripting PHP embutida em HTML adiciona um passo. Ao invés de simplesmente enviar uma página HTML estática para o usuário, o servidor deve realizar algumas ações de acordo com o código PHP: o PHP deve tomar algumas decisões e criar uma página apropriada para a respectiva situação. A Error! Reference source not found. ilustra este processo.
As ações do servidor PHP são as seguintes:
1. Lê a requisição vinda do navegador (HTTP Request). 2. Localiza a página no servidor.
3. Executa algumas instruções PHP para modificar esta página.
4. Envia a página pela Internet (ou intranet) para o navegador (HTTP
Figura 2 – Servidor PHP
A principal diferença entre o HTML puro e PHP é que o HTML é simplesmente interpretado pelo navegador, e não é executado no servidor.
O PHP é apenas uma das diversas tecnologias usadas para criar páginas
web dinâmicas e interativas. A seguir um breve histórico da sua evolução na web:
Publicação estática – primeira geração, com páginas simplesmente com HTML, figuras estáticas, textos que podiam ser posicionados precisamente nos termos das coordenadas x e y.
• Sites web ativos - permitem o envio ao usuário de páginas personalizadas. As páginas são construídas pela combinação de linguagens e tecnologias. Estas tecnologias são divididas em dois grupos: tecnologias com execução no lado do cliente e tecnologias com execução no lado do servidor.
3.2. Tecnologias Dinâmicas com Execução no Lado do Cliente
Aqui não existe controle sobre o software usado para visualizar a página no lado do cliente. Isto é uma desvantagem, principalmente, porque estas tecnologias são inovações recentes e só são suportadas pelas versões mais recentes de navegadores. Alguns exemplos destas tecnologias são: Controles ActiveX - criados pelo Visual C++ ou Visual Basic; Java Applets; Script do lado do cliente e HTML Dinâmico. As tecnologias com execução do lado do servidor são: CGI (Common
Gateway Interface); APIs proprietárias de servidores web como ISAPI e NSAPI; ASP
(Active Serves Page); Páginas JavaServers e Java Servlets; JavaScript Server-Side; PHP [CASTAGNETTO, 1999]. A seguir estas tecnologias serão detalhadas.
3.1.1 Controles ActiveX
São programas autocontidos, também conhecidos por componentes que são escritos em linguagens, tal como C++ ou Visual Basic. Quando adicionados a páginas web, eles oferecem uma parte especifica da funcionalidade, tais como: gráficos, temporizadores, autenticação de clientes, e acesso a bancos de dados. Controles ActiveX podem ser executados pelo navegador ou servidor quando eles são embutidos nas páginas web. Estes são adicionados às páginas HTML pela tag <OBJECT>. Uma desvantagem desta tecnologia é o fato de ser proprietária da Microsoft, sendo suportada, em princípio, apenas pelo navegador Internet Explorer. Atualmente, por meio de plug-in, o navegador Netscape também é compatível [CASTAGNETTO, 1999].
3.1.1 Java Applets
Applets são programas escritos na linguagem de programação Java que
podem ser incluídos nas páginas HTML da mesma forma que imagens podem ser incluídas. Para o uso de applets é preciso que o navegador esteja habilitado para
visualizar uma página que os contenham. Desta forma, o código applet é transferido para o seu sistema e executado pelo navegador. O fato de ser escrito em Java faz com que applets adquiram todas as vantagens da linguagem principalmente a de ser multiplataforma [CASTAGNETTO, 1999].
3.1.1 Script do Lado Cliente e HTML Dinâmica (DHTML)
Linguagens de script funcionam pela adição de instruções script no código HTML. Desta forma, quando o navegador encontra uma instrução script, ele a traduz em HTML puro, isto assumindo que o navegador “entende” a respectiva linguagem de script. JavaScript é o exemplo mais conhecido deste tipo de linguagem, além desta existe o VBScript, proprietário da Microsoft e compreendido apenas pelo Internet Explorer. HTML dinâmica funciona da mesma forma que linguagens de script, diferindo apenas pelo fato de permitir acesso a características extras como habilidade para páginas animadas e posicionamento de gráficos e textos em posições absolutas [CASTAGNETTO, 1999].
3.3. Tecnologias Dinâmicas com Execução do Lado do Servidor
A seguir são detalhadas as principais tecnologias para páginas dinâmicas no lado do servidor.
3.3.1.
Common Gateway Interface – CGI
É a tecnologia dinâmica com execução no servidor mais comum e, por isso, todo servidor web possui suporte a programas CGI. Um programa CGI pode ser escrito em qualquer linguagem, sendo a linguagem Perl a mais usada para isso. Servidores web implementam ações CGI como uma entrada entre a requisição do usuário e os dados requeridos. A cada requisição recebida pelo servidor web é criado um novo processo. A principal desvantagem do CGI é escalonamento destes
processos, principalmente quando o número de requisições recebidas pelo servidor
web for alto. Algumas alternativas que tentam amenizar estes problemas são as
tecnologias FastCGI e Apache mod_perl [CASTAGNETTO, 1999].
3.3.2.
APIs Proprietárias de Servidores Web (ISAPI, NSAPI)
Numa tentativa de resolver a ineficiência do CGI, Microsoft e Netscape desenvolveram cada uma suas próprias APIs. Assim, foram criadas bibliotecas compartilhadas por desenvolvedores para escrever suas aplicações. Estas bibliotecas foram projetadas para serem carregadas em um mesmo processo no servidor web e foram habilitadas para o servidor múltiplas requisições sem criar um novo processo. Elas podem ser carregadas quando o servidor web se inicia, ou quando for necessário.
No entanto, mesmo que estas bibliotecas ofereçam uma extensão eficiente aos servidores web, elas ainda possuem alguns problemas. São específicas para plataformas proprietárias, e o fato destas bibliotecas serem acessadas por diversos usuários simultaneamente faz com que elas precisem ser thread-safe. Isto implica em acesso global e variáveis estáticas. Além disso, se um programa servidor causa uma violação de acesso, ele pode potencialmente interromper a execução de todo o servidor web [CASTAGNETTO, 1999].
3.3.3.
Active Server Page – ASP
ASP é similar ao PHP, já que combina HTML, scripting e componentes executáveis no servidor em um arquivo chamado Active Server Page. Quando o servidor web recebe uma requisição para um arquivo ASP, ele primeiro verifica se a página já está compilada e então a executa. Se a página ainda não foi compilada, então o servidor realiza a compilação e a executa. O resultado de um arquivo ASP é uma página web finalizada e retornada ao navegador.
Uma página ASP pode ser escrita usando HTML, JScript (variação Microsoft para o JavaScript), e VBScript. Através de scripting, a página ASP pode acessar componentes executando no servidor. Estes componentes podem ser escritos em qualquer linguagem desde que tenham presente uma interface COM (especificação de componente Microsoft). A desvantagem de ASP é que só se executa com servidores web Microsoft (IIS – Internet Information Server, PWS – Personal Web
Server) em sistemas operacionais da Microsoft (WinXX, WinNT) [CASTAGNETTO,
1999].
3.3.4.
JavaScript que se Execute no Lado do Servidor
(SSJS)
SSJS é uma solução Netscape em resposta ao ASP. Tal como o ASP, páginas SSJS consistem de código HTML com seções de script executadas no servidor embutidas. O código destas seções de script é executado pelo servidor e produz páginas web de texto HTML enviado ao navegador.
3.3.5.
Java Servlets e JSP
Java Servlets e JSP são tecnologias que executam no lado do servidor e usam a linguagem de programação Java. A API Java Servlet, criada pela Sun, é uma extensão da plataforma Java que oferece facilidades na criação de conteúdos dinâmicos e extensão de funcionalidades do servidor web.
Java Servlets é muito similar ao CGI no que diz respeito ao fato de que Java
Servlet é um programa no lado do servidor que serve requisições http e retorna o
resultado como uma resposta http. Mas as semelhanças acabam aqui.
Uma boa analogia para servlets é com um applet não visual que roda no servidor web. O seu ciclo de vida é muito similar ao de um applet e também se executa sobre a Máquina Virtual Java (JVM).
JavaServerPages (JSP) são similares ao ASP da Microsoft, pois contem HTML, código Java, e componentes JavaBeans. JSP oferece uma alternativa para embutir componentes nas páginas, e ter como sua própria tarefa gerar a página que é finalmente enviada ao cliente. Quando o usuário requer um arquivo JSP, o servidor
web vai primeiramente gerar um servlet correspondente, a menos que este já exista.
Então o servidor web vai invocar o servlets e retornar o conteúdo resultante para o navegador.
3.3.6.
Hypertext Preprocessor – PHP
PHP trabalha de modo similar ao ASP: seções de script são delimitadas pela
tag <?php e ?> e embutidas nas páginas HTML. Estes scripts são executados no
servidor antes que a página seja enviada ao navegador, então não é preciso um suporte PHP pelo navegador. A diferença em relação ao ASP é a independência de plataforma e o fato de ser código aberto.
3.4. Vantagens das Tecnologias Dinâmicas com Execução do
Lado do Servidor
Dentre as vantagens das tecnologias dinâmicas com execução do lado do servidor em relação àquelas com execução no cliente estão: a minimização do tráfego na rede; a resposta chega mais rapidamente ao cliente; evita problemas de incompatibilidades de navegadores; pode oferecer dados ao cliente que não residam no próprio cliente; oferece mais segurança, já que alguns códigos não podem ser visualizados no navegador [CASTAGNETTO, 1999].
4. PHP HIPERTEXT PREPROCESSOR
PHP é uma linguagem de código aberto que utiliza scripts embutidos em HTML usada na programação de aplicações na web. Seu ambiente de desenvolvimento foi escrito na linguagem Perl.
Sua vantagem em relações a outras tecnologias como ASP, ColdFusion, Perl, Java, Python etc, está na simplicidade e portabilidade, já que existem versões para diversas plataformas com sistema operacional Unix, Linux, Windows NT, Windows95/98 e facilidade no uso de banco de dados, principalmente com o MySQL, que também é código aberto, formando um casamento perfeito. Outra vantagem do PHP é a independência de plataformas e o fato de ser uma tecnologia de execução no lado do servidor.
PHP é diferente de scripts CGI escritos em outras linguagens como Perl ou C porque, ao invés de escrever um programa com muitos comandos para imprimir HTML, deve-se escrever um arquivo HTML com algum código inserido para fazer alguma ação. O que distingui o PHP de JavaScript no lado do cliente é que o código é executado no servidor. Se houver um script no servidor, o cliente recebe os resultados da execução desse script sem nenhum modo de determinar como é o código fonte. É possível ainda configurar o servidor para processar todos os arquivos HTML como PHP, então não haverá modo de os usuários descobrirem se você utiliza esta linguagem ou não.
4.1. A História do PHP
4.1.1.
PHP/FI
O PHP sucede de um produto mais antigo, chamado PHP/FI. PHP/FI foi criado por Rasmus Lerdorf em 1995, inicialmente como simples scripts Perl como estatísticas de acesso para seu currículo on-line. Ele nomeou esta série de script de
Personal Home Page Tools. Como mais funcionalidades foram requeridas, Rasmus
escreveu uma implementação em C muito maior, que era capaz de comunicar-se com base de dados e possibilitava aos usuários desenvolver simples aplicativos dinâmicos para web. Rasmus resolveu disponibilizar o código fonte do PHP/FI para que todos pudessem ver, usar, e também consertar bugs e melhorar o código.
PHP/FI, que significa Personal Home Page/Forms Interpreter, incluía algumas funcionalidades básicas do PHP que nós conhecemos hoje. Ele usava variáveis no estilo Perl, interpretação automática de variáveis vindas de formulário e sintaxe embutida no HTML. A sua própria sintaxe era similar a do Perl, porém muito mais limitada, simples, e um pouco inconsistente.
Em 1997, PHP/FI 2.0, a segunda versão da implementação C, obteve milhares de usuários ao redor do mundo, com aproximadamente cinqüenta mil domínios reportando que possuíam PHP/FI 2.0 instalado, abrangendo 1% dos domínios da Internet. Enquanto isto havia milhares de pessoas contribuindo com pequenos códigos para o projeto.
O PHP/FI 2.0 foi oficialmente lançado somente em novembro de 1997, após perder a maior parte de sua vida em versões beta. Ele foi rapidamente substituído pelas versões alpha do PHP 3.0.
4.1.2.
PHP 3
O PHP 3.0 foi a primeira versão que se assemelha ao PHP que nós conhecemos hoje. Ela foi criada por Andi Gutmans e Zeev Suraski em 1997 e foi totalmente reescrito, após eles descobrirem que o PHP/FI 2.0 poderia ajudá-los a desenvolver suas próprias aplicações de comércio eletrônico de um projeto de universidade. No esforço cooperativo, a iniciativa de começar o PHP/FI a partir da base-usuário existente, Andi, Rasmus e Zeev decidiram cooperar e anunciar o PHP 3.0 como uma versão oficial de seu sucessor, o PHP/FI 2.0, e o desenvolvimento do PHP/FI 2.0 foi descontinuado.
Uma das maiores características do PHP 3.0 é sua grande capacidade de extensibilidade. Além de oferecer aos usuários finais uma infra-estrutura sólida para diversos bancos de dados, protocolos e APIs, a extensibilidade do PHP 3.0 atrai dezenas de desenvolvedores a se juntarem e submeterem novos módulos. Esta é a chave do tremendo sucesso do PHP 3.0. Outras características importantes introduzidas no PHP 3.0 foram o suporte à orientação a objetos e uma sintaxe muito mais poderosa e consistente.
Toda a nova versão da linguagem foi realizada sob um novo nome, que removeu a impressão do limitado uso pessoal que o PHP/FI 2.0 prendeu. Ela foi nomeada simplesmente PHP, com o significado que é um acrônimo - PHP: Hypertext Preprocessor.
No final de 1998, o PHP obteve uma base de dezenas de milhares de usuários e centenas de milhares de páginas web relatando que o tinham instalado. Em seu pico, o PHP 3.0 foi instalado em aproximadamente 10% dos servidores web da Internet.
O PHP 3.0 foi oficialmente lançado em junho de 1998, depois de ter passado aproximadamente nove meses em testes públicos.
4.1.3.
PHP 4
Os objetivos do projeto do PHP 4.0 eram melhorar a performance de aplicações complexas, e melhorar a modularidade do código base do PHP. Tais aplicações foram possíveis por causa das novas características do PHP 3.0 e o suporte a uma variedade de banco de dados de terceiros e APIs, mas o PHP 3.0 não foi projetado para trabalhar com aplicações muito complexas eficientemente.
A nova engine, a Zend Engine (formada pela junção de Zeev e Andi), fez deste objetivo um sucesso, e foi introduzida em meados de 1999. PHP 4.0, baseado nesta engine, e acompanhado de uma série de novas características, foi oficialmente lançada em maio de 2000, quase dois anos após o seu predecessor, o PHP 3.0. Além do melhoramento da performance desta versão, o PHP 4.0 incluiu outras características chave como o suporte para muitos servidores web, sessões http,
buffer de saída, maneiras mais seguras de manipular entradas de usuários e muitas
construções novas na linguagem.
PHP 4 é a última versão lançada do PHP. O trabalho já começou na modificação e melhoramento da Zend Engine para integrar novas características que foram designadas para o PHP 5.0.
Hoje, o PHP está começando a ser usado por centenas de milhares de desenvolvedores, e muitos milhões de sites reportam que têm o PHP instalado, o que explica os 20% de domínios da Internet.
4.1.4.
PHP 5
O futuro do PHP é dirigido principalmente pelo seu núcleo, a Zend Engine. PHP 5 irá incluir a nova Zend Engine 2.0.
4.2. Estimativas de Uso do PHP
O uso de PHP como solução para sites web dinâmicos vem crescendo em ritmo acelerado e se tornando cada vez mais popular como poder observado no gráfico da Figura 3. De acordo com o site oficial do PHP - www.php.net, estima-se que em agosto de 2004 o número de domínios usando PHP no mundo era de 16.946.328 e 1.348.793 endereços IP. O gráfico a seguir mostra a curva de crescimento do uso de PHP desde janeiro de 2000 até julho de 2004.
Figura 3 - Gráfico do Uso de PHP
4.3. Introdução à Linguagem PHP
Para que se possa desenvolver aplicações web utilizando PHP, é necessário obter e instalar alguns elementos essenciais. O primeiro deles é um servidor web que suporte ou seja suportado por PHP. Um dos servidores suportados são o Apache (http://www.apache.com) e o Sambar (http://www.sambar.com) [MAZZOLA, 2004].
O segundo elemento fundamental é o ambiente PHP. O PHP deve ser baixado e instalado seguindo as regras de instalação para o ambiente considerado.
Finalmente, se as pretensões do programador incluem o desenvolvimento de aplicações envolvendo acesso a bases de dados, a obtenção de um gerenciador de bases de dados é outra etapa importante neste processo. As opções são muitas, desde opções baseadas em plataformas Wintel, como o Microsoft Access (via interface ODBC) ou soluções abertas como no caso de MySQL, entre muitas outras opções disponíveis.
A integração de scripts PHP com código escrito em HTML é feita de forma bastante confortável. A inclusão é feita a partir da tag <?php, sendo que a tag ?> é utilizada para encerrar a inclusão.
Mesmo que contenham código HTML em sua maioria, os arquivos que contiverem código PHP embutido deverão ter as extensões que indiquem esta propriedade. A extensão a ser dada depende de como foi configurado o ambiente PHP no servidor, mas, usualmente elas apresentam o formato .php, .php3 ou .php4.
A listagem a seguir apresenta um primeiro exemplo de código PHP, que vai gerar uma página contendo a impressão de um texto centrado na mesma. A página resultante deste primeiro programa pode ser visualizada na Figura 4.
<?php
// Meu primeiro programa em PHP
echo “<p align=’center’>Este é meu primeiro programa em PHP!!!</p>”; ?>
Figura 4 – Página Resultante da Execução do Script PHP
Um programa PHP funde comandos HTML e comandos PHP. Os comandos HTML que deverão ser interpretados diretamente pelo navegador são incluídos de forma similar à construção de qualquer página HTML.
Código PHP sempre pode ser mesclado com código HTML, desde que sejam delimitados pelos tags mencionados anteriormente. Os comandos PHP devem sempre finalizar com ;.
Na listagem apresentada a seguir, observa-se um exemplo mais típico que funde HTML e PHP. Seu resultado é visto na Figura 5 – Exibição da Data e Hora em uma Página HTML.
<HTML>
<HEAD><TITLE>Exemplo 2 de PHP – Data e Hora</TITLE></HEAD> <BODY>
<?php
$data = date(“d/m/Y”,time()); $hora = date(“h:i”,time()); ?>
<p align=”center”><strong><font color=”#0000FF”>Hoje é dia</font> <?php echo $data; ?><font color=”#0000FF”> e agora são</font> <?php echo $hora; ?></p>
</BODY> </HTML>
Figura 5 – Exibição da Data e Hora em uma Página HTML
4.3.1.
Valores Literais Numéricos e Alfanuméricos
Literais são todos os dados enviados diretamente ao PHP. Podem ser de texto e numéricos. Os literais numéricos são utilizados em scripts que envolvam cálculos aritméticos diversos ou mesmo aqueles que envolvam valores monetários ou de hora e data. Literais numéricos podem ser expressos em decimal, o que é feito mais comumente, mas outras bases numéricas podem ser consideradas, como a base octal ou hexadecimal. É possível ainda utilizar notação científica para expressar os valores.
Os literais alfanuméricos são utilizados normalmente para a exibição de texto resultante do processamento de um script PHP. Os literais alfanuméricos devem ser expressos utilizando delimitadores, os quais podem ser de três tipos:
• Aspas simples (‘), que é o modo mais comum de apresentar textos em geral; entretanto, o uso de aspas simples oferece algumas complicações na construção de determinadas frases (por exemplo, se a própria frase contém aspas simples);
• Aspas duplas (“), que permite apresentar textos simples, mas são úteis principalmente quando se quer introduzir caracteres de controle no meio do texto, como tabulação, saltos de linha etc.
• Aspas invertidas (`), que servem para incluir comandos do sistema operacional no interior de scripts PHP.
4.3.2.
Constantes PHP
PHP permite a definição de constantes de ambiente e do próprio sistema. A Tabela 1 mostrada a seguir indica as constantes PHP que podem ser definidas pelo programador. O programador pode ainda definir as suas próprias constantes, utilizando o comando define, cuja sintaxe é:
Descrição
_FILE_ Nome do script em execução.
_LINE_ Número da linha do script sendo executada.
PHP_VERSION Versão corrente do PHP.
PHP_OS Sistema operacional no qual o PHP está executando.
TRUE Verdadeiro. Utilizado em comparações.
FALSE Falso. Utilizado em comparações.
E_ERROR Exibe erro irrecuperável de um script.
E_WARNING Exibe mensagem de aviso do PHP (execução continua).
E_PARSE Exibe um erro de sintaxe do PHP.
E_NOTICE Indica alguma ocorrência (erro ou não).
Tabela 1 – Constantes PHP
PHP suporta os operadores clássicos, que estão distribuídos em cinco categorias: operadores aritméticos, de atribuição, binários, lógicos e de comparação.
As cinco categorias estão apresentadas nas tabelas a seguir:
Operadores Aritméticos Descrição
Adição + Adiciona dois valores.
Subtração - Subtrai um valor de outro.
Multiplicação * Multiplica dois valores.
Divisão / Divide um valor por outro.
Módulo % Resto de uma divisão inteira.
Tabela 2 – Operadores Aritméticos do PHP
Operadores de Atribuição Descrição
Igualdade = oper1 = oper2
Adição += oper1 = oper1 + oper2
Subtração -= oper1 = oper1 - oper2
Multiplicação *= oper1 = oper1*oper2
Divisão /= oper1 = oper1/oper2
Concatenação .= oper1 = oper1.oper2
AND &= oper1 = oper1 & oper2
OR |= oper1 = oper1 | oper2
OR Exclusivo ^= oper1 = oper1 ^ oper2
Desloca Direita >>= oper1 = oper1 >> oper2
Desloca Esquerda <<= oper1 = oper1 << oper2
Tabela 3 – Operadores de Atribuição do PHP
Operadores Binários Descrição
AND & AND lógico.
OR | OR lógico.
OR Exclusivo ^ OR exclusivo de dois valores.
Desloca à Direita >> Desloca n bits para a direita.
Desloca à Esquerda << Desloca n bits para a esquerda.
Tabela 4 – Operadores Binários do PHP
Operadores Lógicos Descrição
AND AND ou && AND lógico.
OR OR ou || OR lógico.
OR Exclusivo XOR OR exclusivo de dois valores.
Complemento ! Negação do operando.
Tabela 5 – Operadores Lógicos do PHP
Operadores de Comparação Descrição
Igualdade == Testa igualdade dos operandos.
Desigualdade != ou <> Testa desigualdade dos operandos.
Maior > Testa superioridade.
Maior ou Igual >= Testa superioridade ou igualdade.
Menor < Testa inferioridade.
Menor ou Igual <= Testa inferioridade ou igualdade.
PHP define ainda um operador ternário, que permite atribuir um entre dois possíveis valores com base na avaliação de uma expressão booleana. O efeito deste operador é similar ao de uma estrutura do tipo if, mas sua sintaxe é mais compacta. A forma geral deste operador é:
<condição> ? <expressão1> : <expressão2>
O operador deve ser interpretado da seguinte maneira: se a <condição> for avaliada como verdadeira, o valor atribuído será o resultado do processamento da <expressão1>; caso contrário, o valor atribuído será o resultado do processamento da <expressão2>.
4.3.3.
Variáveis PHP
No PHP, os identificadores das variáveis PHP iniciam sempre pelo símbolo “$”. Não há necessidade de declaração da variável e associação de um tipo nesta declaração. Sendo uma variável escalar, o tipo a ser atribuído depende do valor associado.
Para as variáveis estruturadas, no caso os vetores, existe a necessidade de identificação dos componentes por meio de um índice, como ocorre com as linguagens de programação clássicas. Exemplos de uso de arrays PHP são mostrados na listagem a seguir:
$a[1] = 100; $b[4] = “Juca”; $c[] = 5;
Pode-se observar que, na última instrução de atribuição, não foi definido um índice para identificar o componente do vetor. Quando isto ocorre, o valor do último índice utilizado para o vetor é incrementado de uma unidade e utilizado para fins de atribuição do valor.
Outra categoria de variáveis são os objetos. Variáveis objeto instanciam classes do PHP, permitindo a ativação de métodos ou funções em tempo de execução.
4.3.4.
Estruturas de Controle
PHP suporta as estruturas de controle padrão de testes a malhas de repetição. As estruturas são descritas a seguir.
Estrutura IF if (condição1) { comandos1 } elseif (condição2) { comandos2 } else { comandos3 } Estrutura SWITCH switch (critério) {
case <valor1>: comandos1; break;
case <valor2>: comandos2; break;
...
case <valorN>: comandosN; break;
default comandos_default; break;
}
Estrutura WHILE while (condição) { comandos } Ou while (condição) { comandos } endwhile;
4.3.5.
Funções
PHP suporta também a criação de funções para simplificar o trabalho de programação do usuário e também para melhor organizar o código. A forma geral da declaração de funções é:
function <nome_func> (arg1,arg2,arg3,... argN) {
comandos
[return <expressão>] }
A exemplo do que ocorre nas linguagens de programação clássicas, as funções são trechos de código encarregados da execução de tarefas que sejam repetitivas ou que desempenhem um papel importante no contexto de um programa. Funções podem ser utilizadas para organizar o programa em desenvolvimento.
A listagem a seguir ilustra a declaração e uso de uma função em PHP.
<?php
function escreve ($texto,$vezes =1) {
for ($i=0;$i<$vezes;$i++)
echo $texto;
}
escreve(“Este é um exemplo de função<br>”); escreve(“O texto será impresso duas vezes”,2); ?>
No exemplo anterior, a função apenas executa uma tarefa específica (no caso, a impressão de um texto por um número repetido de vezes), mas não é responsável pelo retorno de nenhum valor resultante de um processamento. Este tipo de uso de uma função é também típico na programação tradicional, ou seja, funções são utilizadas para processar parâmetros e retornar resultados deste processamento. Isto é ilustrado no exemplo a seguir.
<?php
function dobra ($base) { $dobra = $base*2; return $dobra; } $valor = 32;
echo “O dobro de $valor é “ . dobro($valor); ?>
4.3.6.
Classes
Classes correspondem a agrupamentos de funções e variáveis. As classes correspondem ao conceito de classes da programação orientada a objetos, incluindo os dados (atributos) e o comportamento (métodos). O uso de classes é propiciado pela ativação de instâncias destas, às quais se dá o nome de objetos. Por esta razão, PHP suporta as chamadas variáveis objeto.
A definição de classes em PHP é bastante semelhante à de outras linguagens de programação que suportam o conceito de orientação a objetos. A sintaxe de definição de uma classe é a seguinte:
class nome_classe { <procedimentos> }
Quando uma classe é declarada, as variáveis utilizadas localmente devem ser igualmente declaradas, o que é feito com o auxílio da cláusula VAR do PHP, segundo é mostrado abaixo:
class autor { var $nome; function autor() { $this->nome[‘prim_nome’] = “Caetano”; $this->nome[‘sobrenome’] = “Veloso”; } }
A variável this, utilizada no exemplo, é uma variável padrão do PHP que referencia o objeto atual relacionado com a classe. Por esta razão, ela não foi declarada no exemplo.
4.4. O PHPTriad
O PHPTriad oferece um ambiente para desenvolvimento de aplicações PHP que rode sobre a plataforma Wintel, PC com sistema operacional Windows. O PHPTriad instala o Apache, o banco de dados MySQL e o servidor PHP em máquinas Windows. Sua utilização é muito simples, o que facilitou bastante o desenvolvimento do trabalho. A versão que usamos no desenvolvimento do SGA foi o PHPTriad versão 2.2.
O PHPTriad é adequado apenas para o desenvolvimento de aplicações PHP e não para a implantação destas aplicações, a não ser que este esteja em um host
web num ambiente seguro com mecanismos de firewall. [PHPTriadHelp].
O Apache e o MySQL rodam como serviços, ou seja, eles rodam em
background aguardando por requisições. Pelo painel de controle do PHPTriad
básico para colocar o Apache e o MySQL como serviços do sistema operacional Windows é o seguinte:
1. Lançar o painel de controle do PHPTriad pelo menu Iniciar do Windows. 2. Clicar em "Install Apache Service".
3. Clicar "Start Apache".
4. Clicar "Start MySQL". Escolher o link apropriado baseado na sua versão do Windows.
5. Clicar "Open site w/default browser".
6. Editar o site alterando ou sobrepondo os arquivos em c:/apache/htdocs. Isto pode ser facilmente obtido clicando em "Edit Site" também no painel de controle do PHPTriad.
7. Finalmente, para testar o site com a aplicação PHP, basta chamar pelo seu navegador com o endereço http://localhost.
4.4.1.
Apache
O Apache já vem configurado para responder às requisições na porta 80. O seu arquivo de configurações fica localizado no diretório C:/apache/conf/httpd.conf.
4.4.2.
MySQL
O MySQL possui simplesmente um usuário root que não possui senha. Uma senha pode ser atribuída para este usuário, bem como um novo usuário pode ser criado.
Para adicionar uma senha ao root, basta executar o seguinte comando:
C:\apache\mysql\bin\mysql -u root mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
4.4.3.
PHP
Para a versão 2.2 do PHPTriad, a versão do PHP instalada é a 4.1.1. O PHP é configurado em modo CGI.
5. DESENVOLVIMENTO DO SISTEMA DE GERENCIAMENTO DE
AVALIAÇÕES
5.1. Visão do Sistema
O Sistema de Gerenciamento de Avaliações – SGA tem como objetivo principal proporcionar, como o nome sugere, a gerência de avaliações estudantis de maneira eletrônica. O sistema é dividido em dois módulos principais: a interação com o professor e a interação com o aluno.
Em relação ao professor, o SGA auxilia na elaboração e correção de avaliações e no monitoramento dos resultados por meio de estatísticas de desempenho.
Para permitir a elaboração das avaliações, o sistema permite o cadastro de avaliações objetivas e discursivas, assim como posterior alteração e exclusão. Além disso, pode-se gerar avaliações escolhendo as questões manualmente ou através do sistema. Neste caso, o professor informa a quantidade de questões desejadas de acordo com três níveis de dificuldade – fácil, médio e difícil – e o sistema escolhe aleatoriamente dentre as questões armazenadas no banco de dados. As questões objetivas são corrigidas automaticamente pelo sistema no momento do armazenamento da avaliação, e as questões discursivas devem ser corrigidas pelo professor posteriormente.
É possível temporizar a avaliação, ou seja, estabelecer um tempo máximo para sua execução. Também pode-se elaborar a avaliação e não torná-la pública no momento de sua criação, não deixando, com isso, a avaliação disponível para realização pelos alunos. O professor deve então, posteriormente, torná-la pública, ou tem a opção de excluí-la.
O resultado das avaliações é fornecido juntamente com gráficos estatísticos de desempenho na turma e entre turmas, quando for o caso. O resultado pode ser específico para um aluno ou para toda a turma. Se for para um único aluno, as respostas para cada questão são exibidas, a nota, o tempo de resposta de cada questão e de toda a prova (quando a prova for temporizada), gráficos estatísticos comparando seu desempenho com a turma.
Em relação ao aluno, o SGA permite a realização de avaliações pela web, a verificação das provas que estão disponíveis para realização, e a visualização de resultados. No resultado, o aluno observa suas respostas para cada questão, juntamente com o gabarito, gráficos estatísticos comparando seu desempenho com o da turma, o percentual de acertos.
O SGA consiste em duas partes principais. Primeiramente, um banco de dados que armazena e organiza as informações sobre as principais entidades do sistema e seus relacionamentos:
• Cursos • Disciplinas • Turmas • Professores • Tópicos • Alunos • Avaliações • Respostas • Questões • Matrículas
Questões estão relacionadas a somente um tópico, e são classificadas de acordo com o nível de dificuldade – fácil, médio ou difícil. A cada tópico, que pode estar relacionado a várias disciplinas, está associado um conjunto de questões
cadastradas pelo professor. O sistema pode selecionar as questões para a avaliação automaticamente, de acordo com os seguintes dados fornecidos pelo professor: disciplina, tópicos relacionados e número de questões dos três níveis de dificuldade. Neste caso, o sistema sorteia as questões que estão armazenadas no banco de dados de acordo com os parâmetros fornecidos. A avaliação pode também ser totalmente elaborada pelo professor, com a escolha específica das questões.
As respostas às questões poderão ser temporizadas ou não. As datas de início e fim da avaliação também serão registradas no sistema. Ao término da avaliação o aluno tem o seu resultado imediato na tela e poderá compará-lo com o resultado dos demais alunos, enquanto que o professor poderá gerar relatórios da avaliação em aspectos quantitativos e qualitativos, facilitando a análise dos resultados.
O professor poderá determinar a data de início e fim de um processo de avaliação. Alterações ou exclusões das questões somente serão permitidas caso nenhum aluno ainda tenha realizado uma avaliação.
As questões poderão ser objetivas, subjetivas, de somatório, de associação de colunas, entre outras formas. Para as questões subjetivas poderá ser usada a técnica de aproximação de conteúdo. Nesta técnica o professor cadastra a questão e as palavras chave desejadas na resposta do aluno. Desta forma, um agente valida a resposta cruzando-a com as palavras chaves cadastradas e seus sinônimos.
Além disso, o SGA possui interfaces com o professor e com o aluno, nas quais são apresentadas as opções relativas a cada tipo de usuário. O login na página inicial, que é comum aos dois usuários, é realizado e, de acordo com o tipo da matrícula – aluno ou professor – e o usuário é redirecionado à página principal de cada um.
5.2. Metodologia de Desenvolvimento
O desenvolvimento de aplicações em PHP e MySQL deve ser realizado de modo que o código fique organizado, documentado e principalmente de forma que os blocos de código ou funções possam ser reutilizados. Além disso, deve tratar todas as possibilidades do sistema com robustez e coerência. Para esta tarefa nos baseamos no processo de desenvolvimento de aplicações web com PHP e MySQL exemplificados em [GREENSPAN, 2001].
Mais importante que a codificação da aplicação é o seu planejamento. De fato, foi uma das etapas mais longas do projeto. As etapas, sobre um olhar mais abrangente do desenvolvimento da aplicação, foram [GREESPAN, 2001]:
Determinar o Escopo e os Objetivos da Aplicação
Esta etapa foi vital para o desenvolvimento. Nela foi realizado o levantamento dos requisitos pela discussão com potenciais usuários do sistema, da pesquisa e análise de sistemas semelhantes existentes e da descrição dos casos de uso.
Determinar as Páginas Necessárias
Após a etapa de determinação do escopo e objetivos da aplicação, já foi possível construir uma árvore preliminar das principais páginas da aplicação.
É interessante montar um protótipo do layout das páginas com ênfase na semântica das informações que devem estar contidas nestas páginas, ou seja, sem se preocupar com a estética e usabilidade das páginas, e sim com as informações que são relevantes e que devem ser mostradas, quais dados precisam entrar no sistema, como deve ser a dinâmica destas páginas etc.