Baixe o app para aproveitar ainda mais
Prévia do material em texto
SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO Aula 6 Programação Podemos definir programação como: • a ação e o efeito de programar. • a idealização e a ordenação das ações que vão ser realizadas no âmbito de um projeto; • a preparação de máquinas para cumprirem uma determinada tarefa a um dado momento; • a elaboração de programas para a resolução de problemas através de computadores; e • a preparação dos dados necessários para obter uma solução de um problema com uma calculadora eletrônica, por exemplo. Hoje em dia, a noção de programação é bastante associada às programação em informática. Este é um processo em que um programador escreve numa linguagem de programação, o código- fonte de um software. O programador encarrega-se de escrever, verificar, averiguar e manter o código-fonte. Neste sentido, os modelos de desenvolvimento de software. A programação realiza-se pelo uso de algoritmos. Uma vez que o programa esteja escrito, deve-se compilar o código para que possa ser executado pelo computador. *Código-fonte = Indicará ao programa o que tem que fazer e de que forma. *Algoritmos = são sequências finitas, ordenadas e não ambíguas de instruções, devendo ser seguidas para resolver um problema. Paradigmas de programação Paradigma = É um conjunto de características que servem para categorizar um grupo de linguagens. Os paradigmas mais comuns para linguagens de programação (LPs) são: • Estruturado; • Orientado a objetos; • Funcional; • Lógico. Mas nesta aula, vamos estudar apenas os paradigmas imperativos estruturado e orientado a objetos. Paradigma imperativo Está fundamentado na ideia de computação como um processo que realiza mudanças de estado. Mas qual é o seu objetivo? Especificar como um processamento deve ser feito no computador. Os programas de LPs, incluídas nesse paradigma, especificam como uma computação é realizada por uma sequência de alterações no estado da memória do computador. Paradigma imperativo estruturado Ele preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: • Sequência; • decisão; • iteração. Tendo, na prática, sido transformada na programação modular, a programação estruturada orienta os programadores para a criação de estruturas simples em seus programas, usando as sub-rotinas e as funções. * A programação estruturada foi a forma dominante na criação de software entre a programação linear e a programação orientada por objetos. Oriundo da necessidade em se eliminar os desvios incondicionais dos programas (goto), baseia-se na ideia de desenvolvimento de programas por refinamentos sucessivos (top down). A programação estruturada consegue organizar o fluxo de controle de execução dos programas. Apesar de ter sido sucedida pela programação orientada por objetos, pode-se dizer que a programação estruturada ainda é muito influente, uma vez que grande parte das pessoas ainda aprende programação através dela. As linguagens Basic, Cobol, Pascal e C são exemplos deste paradigma. Vantagens Os problemas podem ser quebrados em vários subproblemas. A boa legibilidade e a boa compreensão da estrutura deste paradigma motivam os programadores a iniciarem a programação pelo modelo estruturado. Desvantagens • Os dados são separados das funções; • Mudanças na estrutura dos dados acarreta alteração em todas as funções relacionadas; • Gera sistemas difíceis de serem mantidos. Paradigma imperativo orientado a objetos A programação orientada a objetos (OO) é baseada na composição e interação de diversas unidades de softwares denominados objetos. Como se dá o funcionamento de um software orientado a objetos? Através do relacionamento e troca de mensagens entre esses objetos. Esses objetos são classes, e nessas classes os comportamentos são chamados de métodos, enquanto os estados possíveis da classe são chamados de atributos. * Nos métodos e nos atributos também são definidas as formas de relacionamento com outros objetos. Resumindo: Oferece conceitos que objetivam tornar mais rápido e confiável o desenvolvimento de sistemas; Esse paradigma enfoca a abstração de dados como elemento básico da programação; Classes são abstrações que definem uma estrutura de dados e um conjunto de operações que podem ser realizadas sobre elas, chamadas métodos; Os objetos são instâncias de classes. As linguagens Pyton, Ruby, Oberon, Ada, Eiffel, Simula, .NET, Object Pascal, C#, C++, Smalltalk e Java são exemplos deste paradigma. Ambientes de programação É um conjunto de ferramentas usadas no desenvolvimento de software. Pode consistir em somente um sistema de arquivos, em um editor de texto, em um linker e em um compilador. Ou pode ainda incluir uma grande coleção de ferramentas integradas, cada uma das quais acessadas por meio de uma interface, chamadas IDEs (Ambiente de desenvolvimento integrado). * São exemplos de IDEs: Together, Eclipse, Visual Studio, Java Development Kit etc. Para mainframes: Natural Adabas, Ideal Datacom, Mantis, Roscoe, TSO etc. Métodos de pesquisa e ordenação Objetivos: Algoritmos de ordenação – objetivos: • Ordenação por inserção • Ordenação por seleção • Ordenação por trocas Algoritmos de busca – objetivos: • Busca sequencial • Busca binária • Busca em cadeia de caracteres Ordenação A atividade de ordenação pode ser entendida como sendo o processo de rearranjo de certo conjunto de objetos, de acordo com um específico. Mas qual o seu objetivo? Facilitar a localização dos membros de um conjunto de dados. O componente específico de um elemento pertencente ao conjunto que deve ser ordenado, segundo uma função de avaliação, é denominado chave. Você sabia que uma primeira classificação dos diversos métodos de ordenação, diz respeito à sua eficiência em relação à economia de tempo? Uma boa medida da eficiência é obtida contando-se os números: • C de comparações necessárias das chaves; • M de movimentos de elementos. Bons algoritmos de ordenação (algoritmos ótimos de ordenação) exigem cerca de n * log n comparações. * Tais algoritmos apresentam-se muito complexos e fogem do escopo deste trabalho e, por este motivo, não serão aqui apresentados. Quais são as técnicas mais simples de ordenação? Aquelas chamadas de métodos diretos e exigem um número de comparações das chaves da ordem de n² comparações. Existem 3 boas razões para que sejam apresentados apenas os métodos diretos de ordenação: 1) Métodos diretos são particularmente bem adequados para elucidar as características dos principais princípios de ordenação; 2) Seus programas são curtos e de fácil compreensão; 3) Embora métodos sofisticados exijam menor número de operações, estas operações são, em geral, mais complexas em seus detalhes. Consequentemente, os métodos diretos são mais rápidos para os casos em que n for suficientemente pequeno, embora não devam ser utilizados para os casos em que n for grande. * Para os algoritmos de ordenação que serão apresentados, apenas o campo chave terá importância, não sendo relevante definir nenhum outro campo para os elementos. Métodos de ordenação diretos Os métodos de ordenação diretos podem ser classificados em 3 principais categorias, de acordo com o método empregado em seu projeto: Premissas para ordenação Para fazermos qualquer ordenação em um vetor, ou matriz, precisaremos de dois parâmetros: • O vetor, ou a matriz, que será ordenado; • O número de elementos desse vetor que devem ser ordenados (para evitar tratamento de "lixo"). Estrutura de dados É a disciplina que estuda as técnicas computacionais para a organização e manipulação eficiente de quaisquer quantidades de informação. Em um projetode software, 2 aspectos devem ser considerados: • De que forma estão organizados os dados (qual a sua estrutura); • Quais procedimentos atuam sobre estes dados (que operações podem ser realizadas sobre eles). Ao estudarmos estruturas de dados, sempre teremos este par: • Um conjunto estruturado de informações: uma classe de objetos ou um tipo de dados. • Um conjunto definido de operações sobre estes dados: um conjunto de métodos ou funções. Pilha Devido às suas características, na pilha, a operação de inserção e retirada de itens devem ocorrer sempre no topo. Você sabia que a pilha também é conhecida como LIFO? (Last in, first out) “o último que entra é o primeiro que sai” Aplicação: • Verificação do balanceamento de parêntesis numa determinada expressão algébrica. • Lista sequencial de nós cujo acesso é sempre feito apenas por uma das extremidades. • Só é possível processar os elementos por ordem inversa à ordem de chegada. • A classe Pilha usa os métodos da classe ListaLigada. • Manipula melhor os elementos da cabeça (Topo). • Operações realizadas na Pilha são na cabeça (Topo). Modelagem da pilha – aspecto estrutural: • Necessitamos de um vetor para armazenar as informações; • Necessitamos de um indicador da posição atual do topo da pilha; • Necessitamos de uma constante que nos diga quando a pilha está cheia e duas outras para codificar erros. Fila A fila é uma estrutura de dados que simula uma fila da vida real. Possui duas operações básicas: • Incluir no fim da fila; • Retirar do começo da fila. Aplicação • Fila dos serviços acadêmicos; • Ordem com que os documentos são mandados imprimir numa impressora; • Lista sequencial de elementos cujo acesso é feito pelas duas extremidades; • Os elementos são processados pela ordem de chegada, permitindo um tratamento justo de todos os elementos. Operações realizadas na fila: • Adicionar um elemento à fila; • Remover um elemento à fila; • Imprimir os elementos da fila; • Verificar o tamanho da fila; • Verificar se contêm um determinado elemento; • Substituir todas as ocorrências de um elemento da fila por outro. Árvores Uma árvore, nada mais é que um conjunto finito de n nós. Quando n = 0, temos uma árvore nula. Mas suponha que n > 0, então teremos uma árvore com as seguintes características: • um nó especial chamado raiz; • Os demais nós são particionados em T1, T2, ..., Tk estruturas disjuntas de árvores, denominadas sub-árvores. Como as estruturas são disjuntas, garante-se que um nó não aparecerá em mais de uma sub-árvore. Mas você sabia que também podemos definir recursivamente uma estrutura de árvore com tipo básico T? Dependerá de uma das seguintes situações: • A estrutura vazia; • Um nó do tipo T, associado a um número finito de estruturas disjuntas de árvore, de mesmo tipo base T, denominadas sub-árvores. * Existem várias maneiras de se representar uma estrutura de árvore, mas é a representação segundo um grafo que ilustra explicitamente as relações de ramificações exibidas pela estrutura. Percursos em árvores binárias de busca Você sabe quando o percurso em profundidade ocorre? Quando todos os descendentes de um nó filho são processados antes do próximo nó filho. O percurso em profundidade pode ocorrer, ainda, de 3 formas distintas, a saber (considerando o momento em que se processa a informação de cada nó da árvore): 1) Em ordem 2) Pré-ordem 3) Pós-ordem Programação web Você sabia que as linguagens de programação web são umas das mais importantes atualmente? Uma vez que o setor de internet e a criação de sites estão em grande crescimento, com várias pessoas querendo aprender mais sobre o assunto. Como existem diversos tipos de linguagens de programação web, abrem-se vários caminhos para os usuários, que podem interligar alguns desses métodos e fazer um programa ou página mais completo. Linguagem de marcação É uma linguagem que anota o texto para que o computador possa manipulá-lo. A maioria das linguagens de marcação é legível, pois as anotações são escritas em uma forma de diferenciá-las do texto. Por exemplo: com HTML, XML e XHTML, as marcações são < e >. Qualquer texto que aparece dentro de um desses personagens é considerado parte da linguagem de marcação, e não parte do texto em si. Quando as regras são codificadas em torno de como escrever e utilizar a marcação. O programador poderia ter seu próprio "tomar nota linguagem de marcação", se codificada regras como "marcador roxo é para definições, highlighter amarelo é para obter mais detalhes do exame, e notas a lápis nas margens são para recursos adicionais." A maioria das linguagens de marcação, no entanto, é definida por uma autoridade externa para uso por várias pessoas diferentes. Desenvolvimento móvel: web mobile São aplicações que utilizam padrões abertos e teoricamente podem ser executadas em qualquer dispositivo que possua browser. Possibilita uso de conhecimentos prévios das tecnologias web (html, xhtml, js, css) com novas técnicas, para fazer a aplicação funcionar em dispositivos móveis. O mesmo código é usado para todos os dispositivos. Vantagens: Portável; Uso de tecnologias (HTML/CSS/Javascript) conhecidas; Problemas de performance são cada vez menos importantes, devido à evolução dos browsers móveis; Não há processo de aprovação para disponibilização da aplicação; Atualização transparente para o usuário. Desvantagens: Performance inferior às aplicações nativas; Sem acesso aos componentes de hardware do dispositivo (câmera, acelerômetro, bússola etc.); Baixa usabilidade; Especificação HTML5 não finalizada; Dificuldade em adaptar para diferentes dispositivos, resolução de telas e diversidade de browsers. Já ouviu falar em Responsive webdesign (RWD)? É um conceito cujo objetivo é apresentar informação de forma acessível e confortável para diversos meios de acesso (dispositivos). Sabemos que hoje em dia existem diversos dispositivos com resoluções diferentes, como podemos visualizar ao lado. Por esse motivo, o conteúdo a ser publicado deverá sofrer intervenções de layout de acordo com cada dispositivo. A seguir veremos como seria visualizar esse conteúdo antes e depois da intervenção. Responsive webdesign Um design responsivo inclui: • Adaptar o layout da página de acordo com a resolução em que está sendo visualizada; • Redimensionar as imagens automaticamente para que caibam na tela e para que não sobrecarreguem a transferência de dados; • Ocultar elementos desnecessários nos dispositivos; • Adaptar tamanho de botões e links para interfaces touch, em que o ponteiro do mouse é substituído pelo dedo do usuário; • Utilizar de forma inteligente recursos mobile como geolocalização e mudança na orientação.
Compartilhar