Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Informá(ca para as Ciências e EngenhariasVersão : D
(Engenharias Mecânica e Gestão Industrial) Aula 5
Pedro Barahona2019 / 20
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 2
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 3
Resolução – Algoritmo [5]
• A instrução FOR permite executar um bloco de instruções um número devezes pre-determinado.
• Por vezes é interessante executar um bloco de instruções até umacondição se verificar.
• Exemplo:§ Para descobrir se um elemento x está em V, é sempre necessário
percorrer todas as posições de V?« Se x está em V, quando é que se conhece a (menor) posição de x
em V?
« Se x não está em V, quando é que se conclui que não está em V?
• Para permiHr repeHr um bloco de operações enquanto se verificar a suanecessidade pode uHlizar-se a instrução WHILE.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 4
Ciclo WHILE
Operacionalmente:1. A condição é avaliada.
§ Se for verdadeira, executam-se as instruções e volta-se aoponto de parEda (while).
§ (Se for falsa, não se faz mais nada. Termina o while.)
5
Sintaxe:
while condição :
instruções
Exemplo:while semáforo está vermelho
aguardeend
Resolução – Algoritmo [5]
Problema: Verificar se um valor x existe no vetor V• Exemplo: Pesquisar se 9 existe no vetor [3,9,5]
§ pos ← 0; V[pos] ≠ 9? Sim. ConHnua...§ pos ← 1; V[pos] ≠ 9? Não. Portanto, V[pos] == 9.
Em geral:• Quando x está em V:
pos ← 0enquanto V[pos] ≠ x faça-se
pos ← pos + 1§ No fim: de certeza que V[pos] contem x.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 6
Exemplo: Pesquisa em [3, 9, 5]
• Exemplo: Pesquisar se 7 existe no vetor [3,9,5]§ pos ← 0; V[pos] ≠ 7? Sim. ConHnua...§ pos ← 1; V[pos] ≠ 7? Sim. ConHnua...§ pos ← 2; V[pos] ≠ 7? Sim. ConHnua...§ pos ← 3; Não se pode aceder a V[pos]! Portanto, 7 não está em V.
Em geral:• Quando x “está ou não está” em V:
pos ← 0;Enquanto pos < len (V) and V[pos] ≠ x faça-se
pos ← pos + 1No fim: se pos ≤ len(V), de certeza que V[pos] contém x;
se pos > len(V), de certeza que V não contém x.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 7
• Algoritmo geral para procurar x num vetor V:
• Nota: O algoritmo funciona para todos os Hpos de elementos que se possam comparar com o operador !=.
Resolução – Algoritmo [6]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 8
def procura(x,V):""" Verifica se x se encontra em V.Retorna True se sim, e False no caso contrario"""pos = 0while pos < len(V) and V[pos] != x :
pos = pos + 1return pos < len(V)
In : procura(5,[3,5,7,9])Out: True In : procura(‘Paula’,[‘Ivo’, ‘Rui’, ‘Sara’])Out: False
• Se V esPver ordenado só vale a pena procurar enquanto x formenor que os elementos de V com que é comparado.
• Neste caso, encontra-se o elemento se passou do fim e se oelemento foi efePvamente encontrado (este teste não eranecessário anteriormente. Porquê?)
• Nota: O algoritmo funciona para todos os Ppos de elementos que se possam comparar com o operador <.
Resolução – Algoritmo [6]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 9
def procuraOdenado(x,V):""" Verifica se x se encontra em V, que esta ordenado.Retorna True se sim, e False no caso contrario"""pos = 0while pos < len(V) and V[pos] < x :
pos = pos + 1return pos < len(V) and V[pos] == x
Resolução – Algoritmo [6]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 10
def procuraOrdenado(x,V):""" Verifica se x se encontra em V, que esta ordenado.Retorna True se sim, e False no caso contrario"""pos = 0while pos < len(V) and V[pos] > x :
pos = pos + 1return pos < len(V) and V[pos] == x
In : procuraOrdenado(5,[3,5,7,9])Out: True In : procuraOrdenado(‘Paula’,[‘Ivo’, ‘Rui’, ‘Sara’])Out: False
• O algoritmo tem o mesmo comportamento que o anterior, mas émais eficiente• em geral, faz menos comparações.
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 11
Problema do Disco Estragado
• As notas da avaliação con^nua dos alunos de ICE estavamguardadas num computador cujo disco avariou. Da informaçãoque se conseguiu recuperar obPvemos uma matriz, em que cadalinha tem o nº de um aluno, a prova de avaliação* que foi feita e anota obPda pelo aluno nessa prova.
* 1: Exercício 1 2: Exercício 2 3- Projeto 4- Teste 1 5- Teste 2
• Problema: Faça um programa que, dado um conjunto de alunos,verifique se esses alunos fizeram uma dada prova de avaliação eretorne um vetor de tuplos:
§ (nº de aluno, -1) se o aluno não fez a prova; e§ (nº de aluno, nota) se o aluno fez a prova.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 12
Resolução – Problema [1]
1. Compreender totalmente o problema.• Exemplo de vetores de entrada e tuplos de saída para a prova 2:
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 13
Entrada
50123 1 15.150788 1 9.950401 1 12.750123 2 14.350123 3 17.050401 2 13.550123 4 10.450788 3 15.650401 4 11.9 M
501235078850401
V
k = 2
Saída
(50123, 14.3)(50788, -1)(50401, 13.5)
Resolução – Problema [2]
2. Caracterizar o problema.
• Problema: procurar as notas de um conjunto de alunos.
• Entrada: matriz M com três colunas, vetor V com uma coluna e inteiro k (entre 1 e 5)
• Saída: vetor R, com vários tuplos de 2 elementos, um por cada número no vetor V, com a respeEva nota na prova k.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 14
R(50123, 14.3)(50788, -1)(50401, 13.5)
50123 1 15.150788 1 9.950401 1 12.750123 2 14.350123 3 17.050401 2 13.550123 4 10.450788 3 15.650401 4 11.9 M
501235078850401
V
k = 2
Resolução – Problema [3]
3. Generalizar o problema (sempre que for possível).• Não se pode generalizar.
4. Desenhar o algoritmo para resolver o problema.a) Conceber o algoritmo, decompondo o problema em sub-problemas.• Q: Como obter a nota na prova k de todos os alunos?
§ Cria-se um vetor R vazio.§ Para cada elemento el de V:
§ Procura nota do trabalho k de el em M
§ Adiciona tuplo (el, nota) ao vetor R.§ Retorna R
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 15
Resolução – Problema [4]
4. Desenhar o algoritmo para resolver o problema.b) IdenCficar, caracterizar e generalizar cada sub-problema.
• Problema: Pesquisa de um elemento (em 2 colunas de uma matriz).
• Entrada: matriz M, inteiro k, elemento el.
• Saída: Se exisEr uma linha que tenha el na primeira coluna e kna segunda coluna, devolve-se o valor da terceira coluna deM; no caso contrário a saída é -1.
b) IdenEficar, caracterizar e generalizar cada sub-problema.
• Não se pode generalizar.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 16
Resolução – Problema [5]
4. Desenhar o algoritmo para resolver o problema.c) Conceber o algoritmo, assumindo que os sub-problemas estão
resolvidos.
obterNotas( M, V, k):R = []Para cada elemento el de V:
nota ← PesquisaNota( M, el, k)R.append((el,nota))
Devolve R
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 17
Resolução – Problema [6]
5. Para cada sub-problema, desenhar o algoritmo para oresolver.
Pesquisa na matriz M do elemento el, trabalho k :• Para descobrir se el,n está em M, é sempre necessário percorrer
todas as posições de M?§ Se el, k está em M, quando é que se conhece a (menor) posição
de el, k em M?
§ Se el, k não está em M, quando é que se conclui que el, n nãoestá em M?
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 18
Resolução – Problema [7]
5. Para cada sub-problema, desenhar o algoritmo para oresolver.
• Pesquisa na matriz M do elemento el, trabalho k :
PesquisaNota( M, el, k):linha ← 0Enquanto linha < len(M) e (M[linha][0] != el ou M[linha][1] != k) faça-se :
linha ← linha + 1Se linha < len(M)
Devolve M[linha][2]Senão
Devolve -1
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 19
Resolução – Problema [8]
6. Para cada sub-problema (começando pelos mais simples),implementar o respeEvo algoritmo e testar o “sub-programa”.§ PesquisaNota ( M, el, k )
7. Implementar o algoritmo que resolve o problema e testar oprograma pedido.§ ObterNotas ( V )
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 20
Implementação [1]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 21
def PesquisaNota (M,al,k):""" Verifica se na Matriz M existe uma linha cujos primeiros valores são al e k. Se sim retorna o terceiro valor, senão retorna -1"""linha = 0 while linha < len(M) and \
(M[linha][0] != al or M[linha][1] != k):linha = linha + 1
if linha < len(M) :return M[linha][2]
else :return -1
mudança de linha
• Comecemos por implementar a função para resolver o sub-problema:
Implementação – Testes Unitários
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 22
def PesquisaNota (M,al,k):""" ... """linha = 0 while linha < len(M) and \
(M[linha][0] != al or M[linha][1] != k):linha = linha + 1
if linha < len(M) :return M[linha][2]
else :return -1
• Testar a função antes de a usar
In : M = [[50123,1,15.1], . . . , [50401,4,11,9]]In : PesquisaNota(M,50123,2)Out: 14.3In : PesquisaNota(M,50401,2)Out: 13.5In : PesquisaNota(M,50788,2)Out: -1
R(50123, 14.3)(50788, -1)(50401, 13.5)
50123 1 15.150788 1 9.950401 1 12.750123 2 14.350123 3 17.050401 2 13.550123 4 10.450788 3 15.650401 4 11.9 M
501235078850401
V
k = 2
Implementação [2]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 23
def ObterNotas(M,V,k):""" Devolve um vetor R de tuplos obtido da seguinte forma:Para todas as linhas de V, se na Matriz M existe uma linha cujos primeiros valores são os valores de V, inclui um tuplo(al, nota) em que nota é o terceiro valor da linha em M. Casocontrário inclui um tuplo (al, -1) em R."""R = [] for al in V
nota = PesquisaNota(M, al, k)R.append((al,nota))
return R
• E agora a implementação da função principal:
Implementação – Testes
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 24
• Testar a função
In : M = [[50123,1,15.1], . . . , [50401,4,11,9]]In : V = [50123, 50788,50401]In : ObterNotas(M, V, 2) Out: [(50123,14.3), (50788,-1),[50401,13.5)]In : ObterNotas(M, V, 3) Out: [(50123,17.0), (50788,15.6),[50401,-1)]
def ObterNotas(M,V,k):""" ..."""R = [] for al in V
nota = PesquisaNota(M,al,k)R.append((al,nota))
return R
R(50123, 14.3)(50788, -1)(50401, 13.5)
50123 1 15.150788 1 9.950401 1 12.750123 2 14.350123 3 17.050401 2 13.550123 4 10.450788 3 15.650401 4 11.9 M
501235078850401
V
k = 2
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 25
String – sequência de caracteres
• Uma string é uma sequência de caracteres.• Em Python,
§ Escreve-se uma string entre aspas (“ ...”) ou plicas(‘...’).§ As strings (e os caracteres) são do Epo str
In : efct = “Estudante na FCT/NOVA.”In : efctOut: 'Estudante na FCT/NOVA.'In : print(efct)Estudante na FCT/NOVA.In : type(efct)Out: str
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 26
String – Vetor de caracteres
• Sendo uma string uma sequência de caracteres, podem-seusar operações semelhantes aos vetores (listas).
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 27
In : efct = “Estudante na FCT/NOVA.”In : efct[2]Out: 't'In : efct[10:12]Out: 'na'In : efct.index(‘F’)Out: 13In : efct[-5:-1]Out: ‘NOVA'
String – sequência de caracteres
• Um carácter é representado internamente por um número,chamado o código do carácter.
• Uma das codificações de caracteres mais usadas é a codificaçãoASCII (American Standard Code for InformaPon Interchange).
§ Tem limitações no número de caracteres representados.§ Apenas usa um byte (8 bits) podendo representar 28 = 256
caracteres na sua versão estendida (128 na versão inicial, emque um bit era usado para paridade.
• Outras codificações: ISO 8859 e Unicode/UTF.
§ Ultrapassa as limitações do ASCII por representar códigos em16 bits (216 = 65536 caracteres diferentes).
§ O Python 3.X uPliza a codificação Unicode de strings
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 28
Strings - Codificação ASCII
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 29
Caracteres de controlo, como o LF - mudança de linha, em Python ‘\n’, iniciam-se no código 01 e vão até ao código 31
Dígitos
Caracteres de pontuação
Minúsculas
Maiúsculas
Strings - Codificação Unicode [1]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 30
• O código Unicode “contém o código ASCII (h,ps://jrgraphix.net/r/Unicode/)
§ Caracteres começados por 00 (1º byte).
Strings - Codificação Unicode [2]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 31
• Mas permite codificar outros alfabetos !§ Ex: Arménio - Caracteres começados por 05 (1º byte).
Strings - Codificação Unicode [3]
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 32
• Mas permite codificar muitos mais alfabetos !.
Strings – Conversão entre Tipos
• Números e strings representando números são enEdades diferentes enão devem ser confundidos!
• Algumas funções pré-definidas (int, float, str) permitem a sua conversão
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 33
In : int(“1234”) # conversão de str para inteiroOut: 1234In : float(‘12.34’) # conversão de str para decimalOut: 12.34In : int(‘12.34’) # conversão de str para inteiro?....ValueError: invalid literal for int() with base 10: '12.34'In : float(‘1234’) # conversão de str para inteiro?Out: 1234.0In : str(1234) # conversão de str para inteiro?Out: ‘1234’In : str('1234’) # conversão de str para str?Out: '1234’In : ord('ã’) # código ascii do character ãOut: 227
Strings – Comparações [1]
• valorLógico = str1 ==str2§ True se as strings str1 e str2 são iguais; False, no caso contrário.
• valorLógico = str1 < str2§ True se a representação UNICODE da str1 é menor que a da str2.
False, no caso contrário.§ Normalmente corresponde a ordenação lexicográfica (alfabéHca).
• Estas funções DisHnguem maiúsculas de minúsculas. Para garanHr acomparação ‘correta’ de strings podem converter-se para maiúsculas oumin
• strx.toupper() , strx.toupper()§ Convertem a string strx para maiúsculas ou minúsculas.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 34
Strings – Comparações [2]
• Exemplos:
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 35
In : x = ‘Isto é uma string’In : y = ‘isto é uma string’In : z = ‘Isto e uma string’In : x == yOut: FalseIn : x.upper() == y.upper()Out: TrueIn : x <= yOut: TrueIn : x == zOut: FalseIn : x.upper() == z.upper()Out: FalseIn : x > zOut: True
• Strings podem ser “concatenadas” da mesma forma que listas, já questrings são de facto listas de caracteres.
Concatenação de strings
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 36
In : [1,2,3] + [4,5,6]Out: [1,2,3,4,5,6]In : ‘isto’ + ’é’ + ’uma string’Out: ‘istoéuma string’In : ‘isto’ + ’ é ’ + ’uma string’Out: ‘isto é uma string’
In : len(‘isto é uma string’)Out: 17
Strings – Substrings
Outras funções, permitem obter e localizar substrings.
• str1.find (str2)§ Procura a string str2 em str1 e caso existe, retorna o índice em
que str2 começa em str1; caso não exista devolve -1.
• str1.find (str2, pos)§ Procura a string str2 em str1, a parHr da posição pos, e caso existe,
retorna o índice em que str2 começa em str1; caso não exista devolve -1.
• valor Lógico = str1 in str2§ True se a str1 está conHda na string str2; False, no caso contrário.§ Equivalente a str2.find(str1) >=0.
• str1.strip()§ ReHra os espaços e carateres de mudança de linha do início e fim da str1
(úHl para comparações de strings).8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 37
Strings – Comparações [2]
• Exemplos:
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 38
In : x = ‘Isto é uma string’In : y = ‘ Isto é uma string.\n’In : x == yOut: FalseIn : y.strip() == xOut: TrueIn : ‘t’ in xOut: TrueIn : x.find(‘t’)Out: 2In : x.find(‘t’,5)Out: 12In : x.find(‘t’,20)Out: -1
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 39
Rede de computadores
• Um conjunto de computadores que estão interligados com o objeEvo detrocar informação e parElhar recursos.
Uma rede de computadores é uma infra-estrutura de troca de mensagens entre
os computadores que lhe estão ligados, permiEndo o acesso a recursos
remotos e a uElização de aplicações distribuídas
RedeComputador
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 40
Numa transferência intervêm dois computadores e a rede
• Dois computadores§ Nó emissor: produz uma sequência de bytes (mensagem).§ Nó recetor ou desEnatário: recebe essa sequência de bytes.
• Rede§ Meios de interligação: cabos, atmosfera, …§ Equipamentos dedicados a assegurar que a mensagem é
transportada do nó emissor ao nó recetor.
Rede decomputadores
Unidade Central deProcessamento (CPU)
Memória central
Eletrónica decontrolo da rede
Unidade Central deProcessamento (CPU)
Memória central
Eletrónica decontrolo da rede
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 41
Tipos de redes
• Rede local (LAN, Local Area Network)§ Os computadores estão ligados diretamente, i.e., cada um pode
enviar bytes diretamente a qualquer outro.§ Distância entre computadores Epicamente menor que 1km.
• Rede de larga escala (WAN, Wide Area Network)§ O emissor e o desEnatário estão em redes locais disEntas e é
preciso encaminhar os bytes através de equipamento especializado(routers e gateways), capaz de escolher as ligações que permitemchegar ao desEno.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 42
Pacotes
• Como é que os bytes enviados pelo emissor chegam ao desEnatário,que pode estar a muitos milhares de Kms?
• Cada computador tem um endereço.
• A informação é dividida em pacotes (sequências de bytes) e cadapacote tem o endereço do desEnatário.
• Os pacotes são encaminhados individualmente pela rede da origematé ao desEno.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 43
Interligação de redes: exemplo
• Exemplo:§ 2 LANs ligadas por 3 encaminhadores (routers)
Router
Router
Nó Nó
Nó
Rede Local 1
Nó Nó
Nó
Rede Local 2
Router
Ligação via satélite
Ligação fibra ótica
Ligação cabo
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 44
Internet e o encaminhamento de pacotes
• A Internet é uma interligação de redes locais de acordo com normaspróprias.
• Na Internet todos os computadores (ou nós) têm um endereço único(normalmente um número com 32 bits) chamado endereço IP (InternetProtocol).
• Quando uma computador emite um pacote desEnado a outro, noutraLAN, entrega-o ao router mais próximo (que está na sua rede local).
• Os routers propagam o pacote até este chegar ao router da rede localdo computador de desEno, que entrega o pacote ao desEnatário.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 45
Nº de máquinas na Internet
• Este crescimento é muito influenciado pelo sucesso da Web.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 46
Computadores a(vos na Internet:distribuição geográfica
Projecto Carna Botnet, 2012
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 47
Endereços dos nós
• Endereço IP do nó (numérico / machine friendly)§ ConsEtuído por 4 bytes (32 bits)
« representado por 4 números entre 0 e 255, separados por pontos.
§ IdenEfica univocamente o computador na Internet.§ Usado no encaminhamento das mensagens na rede.§ Exemplo: 193.136.122.33
• Endereço simbólico do nó (cadeia de caracteres / user friendly)§ São aqueles nomes que o uElizador usa.§ Exemplo: www.google.com
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 48
Nome do nó
www.di.fct.unl.pt
top-level domain(TLD)
organizaçãonome da máquina
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 49
Domain Name System (DNS)
• Serviço de conversão de nomes “user friendly” em nomes“machine friendly”.§ Este serviço reside num nó da LAN (ou do fornecedor de Internet).
• Invocado quando um nó tenta obter o endereço IPcorrespondente a um dado nome simbólico.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 50
TLDs do Domain Name System [1]
Top-Level Domain Utilizaçãobiz Negócios
com Comercial (EUA)edu Educação (EUA)info Informaçãogov Governo (EUA)mil Militar (EUA)net Redeorg Sem fins lucrativos
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 51
• Nas organizações nos Estados Unidos o top-level domain caracteriza oseu Epo de aEvidade.
TLDs do Domain Name System [2]
• As organizações com sede fora dos Estados Unidos usam um top-leveldomain que é o código do país (com 2 letras).
País TLDpt Portugaluk Reino Unidoes Espanhafr Françanz Nova Zelândiacn China… …
8 Abril 2020 5: Ciclos WHILE; Stings, Redes e Internet 52
Árvore de domínios do DNS
Domínio raiz
Top-leveldomains …
… edu gov com uk pt
cmu
cs
google ibm up unl
fe fct
di
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 53
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 54
Relação cliente-servidor
• Na maioria das situações, as aplicações que usam a rede sãoconsEtuídas por dois programas.
• Um servidor pode servir vários clientes em simultâneo.
Por exemplo,Browser
Por exemplo,Servidor Web
ProgramaCliente
ProgramaServidor
1. Cliente envia pedido
3. Servidor envia a resposta
Recurso
2. Servidorprocessa o pedido4. Cliente
processa a resposta
8 Abril 2020 5: Ciclos WHILE; Stings, Redes e Internet 55
Exemplos de servidores
• Servidor Web§ Recursos: ficheiros e programas.§ Serviços: obter ficheiros e gerar páginas dinâmicas executando
programas a pedido do cliente.
• Servidor de Mail§ Recurso: ficheiros com mensagens.§ Serviços: armazena mensagens ou encaminha-as para outros
servidores de Mail.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 56
Exemplos de clientes
• Cliente Web§ Firefox,§ Internet Explorer,§ Safari,§ Chrome§ ...
• Cliente de Mail§ eM Client,§ Mozilla Thunderbird,§ OperaMail,§ Mail,§ Live Mail, etc.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 57
Protocolos de aplicação
• Conjunto de regras que definem como é que os bytes que circulam narede são interpretados.§ O cliente e o servidor têm de acordar previamente os formatos do
pedido e da resposta;§ Existem normas para imensos serviços na Internet.
• Exemplos:§ Protocolos Internet para consultar o DNS e obter o endereço IP
para um nome;§ Protocolos de aplicações de email (SMTP);§ Protocolos de Web (HTTP).
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 58
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 59
WWW − World Wide Web [1]
• Página Web§ Um documento que contém informação (dados ou referências a
outros dados).
• Link (hiper-ligação)§ Uma ligação (referência) a outra página Web.
• Protocolo da Web§ Protocolos de aplicação que permitem a troca de informação entre
o cliente (browser) e o servidor Web.§ HTTP - HyperText Transfer Protocol
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 60
WWW − World Wide Web [2]
• Site Web§ Conjunto de páginas Web relacionadas umas com as outras.
Fisicamente, correspondem a ficheiros armazenados numcomputador específico.
• Servidor Web - servidor§ Programa que executa no computador em que a informação está
alojada e responde a pedidos para acesso a páginas Web.
• Browser Web - cliente§ Programa que pede páginas Web pela rede aos servidores e as
mostra ao uElizador.
8 Abril 2020 5: Ciclos WHILE; Stings, Redes e Internet 61
URL − Uniform Resource Locator
• Uma forma normalizada de especificar a localização de uma página Web.§ Protocolo (pode ser omiHdo);§ Nome do computador;§ Página.
• Os conteúdos idenEficados pelos URLs são de diferentes Epos.§ Exemplos: ficheiros HTML, imagens, audio clips.
http://asc.di.fct.unl.pt/index.html
Protocolo ComputadorNome DNS ouendereço IP: x.x.x.x
Página
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 62
HTML
• HyperText Markup Language (HTML)§ A linguagem usada para descrever e formatar uma página Web.§ Incluindo colocar imagens e links nas páginas
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 63
<h2 id="center">Exercício 1</h2><p>Recupere o script <a href="file_contaminacao.m">file_contaminacao.m</a> da aula anterior, que ao ser executado cria a variável <b>contaminacao</b>, queregista a concentração de chumbo no solo em vários pontos e que contem:,<ol><li>na primeira linha, um número de 1 a 20, que identifica o ponto de amostragem; <li>na segunda linha, a profundidade de cada amostra (em cm); e, <li>na terceira linha, a concentração de Pb, em partes por milhão. </ol>
Sumário
• Ciclos WHILE.• Resolução de problema.• Strings
§ Relação com vetores.§ Funções (pre-definidas) sobre strings.
• Introdução às redes de computadores e à Internet.
§ Redes de computadores, endereços e DNS;§ Relação cliente/servidor;§ Web e HTML.
• Obtenção de dados da Internet usando Python.§ Alguns slides adaptados do material de suporte do livro N. Dell, J. Lewis, Computer Science
Illuminated 4th Ed, Ed. Jones and Bartle@, 2011
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 64
Obter Conteúdo de um URL
• Como é que se pode aceder ao conteúdo associado a um URL?• No Python, é possível aceder ao conteúdo dum URL, a parEr da
biblioteca requests usando a função requests.get.
• A parEr do objeto resposta é possível obter a seguinte informação:§ resposta.ok terá True case o pedido tenha sido bem sucedido§ resposta.text tem o conteúdo do recurso, como uma string§ resposta.json tem o conteúdo dum recurso JSON, como um
dicionário (veremos mais tarde)§ resposta.content tem o conteúdo do recurso, como uma sequência
de bytes
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 65
import requests
resposta = requests.get ( url )
Obter Conteúdo de um URL
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 66
In : import requests
In : url='https://en.wikipedia.org/wiki/Python_(programming_language)’
In : r = requests.get( url)
In : r.ok
Out: True
In : r.text
Out : '<!DOCTYPE html>\n<html class="client-nojs" lang="en"dir="ltr">...'
• Exemplo:
• As páginas web codificadas em HTML, têm muita “formatação”.• No curso só iremos ler páginas de texto.
Obter Conteúdo de um URL
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 67
• Exemplo:§ Ficheiro de texto
In : import requests
In : url= 'http://icec.ssdi.di.fct.unl.pt/texto.txt'
In : r = requests.get(url)
In : r.ok
Out: True
In : r.text
Out : 'Este ficheiro só contém texto. Tem um total de 162 caracteres.\n\t108 minúsculas;\n\t2 maiúsculas;\n\t20 espaços;\n\t7 caracteres de pontuação;\n\t6 tabs;\n\t6 fins de linha.\n'
Obter Conteúdo de um URL
• Como é que se pode aceder ao conteúdo associado a um URL?• No Python, é possível aceder ao conteúdo dum URL, a parEr da
biblioteca requests usando a função requests.get.
• A parEr do objeto resposta é possível obter a seguinte informação:§ resposta.ok terá True case o pedido tenha sido bem sucedido§ resposta.text tem o conteúdo do recurso, como uma string§ resposta.json tem o conteúdo dum recurso JSON, como um
dicionário (veremos mais tarde)§ resposta.content tem o conteúdo do recurso, como uma sequência
de bytes
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 68
import requests
resposta = requests.get ( url )
Para saber Mais
• Consultar um dos livros de texto aconselhados.• Por exemplo:
§ “Think Python: How to Think Like a Computer ScienEst ”:cap. 7 e cap. 8.
§ “IntroducEon to ComputaEon and Programming Using Python”,caps. 2.1, + 2.3.
8 Abril 2020 5: Ciclos WHILE; S7ngs, Redes e Internet 69