Buscar

Resumo - Seminários integrados em SI - aula 6

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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.

Outros materiais