Teste de Mesa em Algoritmos

O Teste de Mesa é um processo manual que é utilizado para validar a lógica de um determinado algoritmo. Ele é utilizado principalmente em algoritmos quando a linguagem utilizada não possui nenhuma ferramenta automatizada de depuração. O teste consiste em acompanhar os valores das variáveis do programa e verificar se os resultados são os esperados. É um teste limitado, já que é factível somente para programas e algoritmos menores, porém bastante eficaz na detecção de erros 12345.

A figura serve para exemplificar, de maneira didática, os passos de um teste de mesa quando estamos aprendendo sobre algoritmos.

1Stack Overflow em Português 2DIO 3Devs Channel 4Curso de CPP da He4rt Developers – GitHub Pages 5: Treinamento em Lógica de Programação

Como varia a Temperatura no Deserto?

Como sabemos, a água possui um elevado calor específico 1,00 [cal/g °C], em outras palavras, ela não varia de temperatura “facilmente”. As regiões do planeta terra que possuem água em abundância, seja no mar ou na atmosfera, se beneficiam desta propriedade e, portanto, têm a variação de temperatura amenizada devido a esta propriedade. No entanto, em lugares que carecem de água, a variação de temperatura não é amenizada; é, de fato, abrupta. Alguns bons exemplos destes lugares são os desertos, que possuem, muitas vezes, temperaturas elevadíssimas durante o dia e temperaturas negativas durante a noite. ![Gráfico de Temperatura](https://webfisica.com/imagens-fisica/aulas/aula6-41/saara.png “Temperatura Diária no Deserto do Saara”)

O gráfico representa, aproximadamente, como varia a temperatura ambiente no período de um dia, em determinada época do ano, no deserto do Saara – Fonte: https://webfisica.com/fisica/curso-de-fisica-basica/aula/6-41

Tarefa

  1. Crie uma matriz com os valores mostrados no gráfico. Dica: A matriz será de dimensão 12×2
  2. Faça um algoritmo ou implementação que calcule e mostre os cálculos de:
    2a. A Temperatura média diária série de dados
    2b. A Temperatura média diurna da série de dados
    2c. A Temperatura mínima da série de dados
    2d. A Temperatura máxima da série de dados
    2e. A amplitude térmica do dia
  3. Plote os dados reproduzindo o Gráfico do exercício.
  4. Crie um programa que crie uma Matriz de dimensão 3×3 e preencha com valores lidos pelo teclado. No final, mostre a matriz na tela, com a formatação tabular correta.

Dicas e Recursos

  • [Vídeo](https://www.youtube.com/watch?v=FDU-D8ddTU4)
  • [w3resource](https://www.w3resource.com/index.php)

Para demonstrar o uso de uma lista como matriz em Python, podemos criar uma lista com outras listas aninhadas dentro dela. Cada sub lista representa uma linha da matriz e seus elementos representam os valores correspondentes naquela linha.
Segue um exemplo de código:

# criando uma matriz 3x3
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# acessando valores da matriz
print(matriz[0][0]) # primeiro elemento da primeira linha
print(matriz[2][1]) # segundo elemento da terceira linha
print(matriz[1]) # segunda linha completa
# alterando valores da matriz
matriz[0][2] = 10 # alterando terceiro elemento da primeira linha
matriz[2][0] = 20 # alterando primeiro elemento da terceira linha
print(matriz) # exibindo a matriz atualizada
Python

Neste exemplo, criamos uma matriz 3×3 e acessamos e alteramos seus valores utilizando a notação de índices de lista. Ao imprimir a matriz atualizada, podemos ver como a mudança de valores refletiu na matriz original.

Solução

 Crie uma matriz com os valores mostrados no gráfico. Dica: A matriz será de dimensão 12×2

# Cálculos
# VETORES
x = [0,2,4,6,8,10,12,14,16,18,20,22,24]
y = [0,-5,-10,0,13,31,54,47,33,24,18,5,0]
#1 Criar uma MATRIZ
#  dados = [ [linha1], [linha2], [linha3],...[linha_n] ]
dados = [x,y] # Já que  criamos duas listas (vetores) anteriormente, adicionando dentro da lista dados tem-se uma matriz 2x12
print(dados)
#Precisamos criar uma Matriz 12x2 que será justamente a transposta da Matriz dados, irá conter 2 colunas e 12 linhas
# transposição da matriz dados para mtx_dados:
# inicializando uma matriz 2x12 com valores zero.
mtx_dados = [ [0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0] ]
for coluna in range(0,len(x)):
    for linha in range(0,2):
        #print('c',coluna,',l',linha, 'dados d:',dados[linha][coluna])
        mtx_dados[coluna][linha] = dados[linha][coluna]
#print(mtx_dados)
Python

 [[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24], [0, -5, -10, 0, 13, 31, 54, 47, 33, 24, 18, 5, 0]]

2. Faça um algoritmo ou implementação que calcule mostre:

        2a. A Temperatura média diária série de dados

        2b. A Temperatura média diurna da série de dados

        2c. A Temperatura mínima da série de dados

        2d. A Temperatura máxima da série de dados

        2e. A amplitude térmica do dia

  1.  Plote os dados reproduzindo o Grágico do exercício.

Exercício 2

Crie um programa que crie uma Matriz de dimensão 3×3 e preencha com valores lidos pelo teclado. No final, mostre a matriz na tela, com a formatação tabular correta.

2.a Temperatura média diária da série de dados:

$$\bar{T} = \frac{1}{N} \; \int_{0}^{N-1}{\theta_i} $$

\[ \text{em que} \; {\theta_i} \;\text{é o i-ésimo valor de temperatura da série.} \]
# 2.a Temperatura média diária série de dados
somatorio = 0.0
linhas = len(mtx_dados)
#colunas = len(mtx_dados[0])
for i in range(0,linhas):
    #print(f'{i:2} - hora: {mtx_dados[i][0]:2} temperatura:{mtx_dados[i][1]:3}')
    somatorio = somatorio + mtx_dados[i][1]
media = somatorio / linhas
print(f'Média Diária: {media:.2f} [°C]')
Python

Média Diurna (6-18 horas): 13.69 [°C]

# 2c. A Temperatura mínima da série de dados
t_minima = 0.0
linhas = len(mtx_dados)
colunas = len(mtx_dados[0])
for i in range(0,linhas):
    #print(f'{i:2} - hora: {mtx_dados[i][0]:2} temperatura:{mtx_dados[i][1]:3}')
    if mtx_dados[i][1]  t_maxima :
        t_maxima =  mtx_dados[i][1]
print(f'Temperatura máxima: {t_maxima:.2f} [°C]')
Python
    Temperatura máxima: 54.00 [°C]
# 2e. A amplitude térmica do dia
amplitude_termica = t_maxima - t_minima
print(f'Amplitude térmica: {amplitude_termica:.2f} [°C]')
Amplitude térmica: 64.00 [°C]

***plot()***

import matplotlib.pyplot as plt
%matplotlib inline #apenas se for usar o jupyter notebook

[https://matplotlib.org/stable/plot_types/basic/plot.html#sphx-glr-plot-types-basic-plot-py](https://matplotlib.org/stable/plot_types/basic/plot.html#sphx-glr-plot-types-basic-plot-py)

plt.plot(x,y)

Grafico ![png](output_16_1.png)

# Melhorando o visual do gráfico
plt.title('Temperatura diária no deserto do Saara')
plt.ylim(-25, 60)
plt.xlim(0,25)
plt.ylabel('$\theta , [ °mathrm{C}]

Grafico ![png](output_17_0.png)

x = [elemento[0] for elemento in mtx_dados]
y = [elemento[1] for elemento in mtx_dados]
type(x)
print(x,y)
Python
 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24] [0, -5, -10, 0, 13, 31, 54, 47, 33, 24, 18, 5, 0]

##plot avançado##

# [x for x in fruits if "a" in x]
x = [elemento[0] for elemento in mtx_dados] # Gera a lista para o eixo x
y = [elemento[1] for elemento in mtx_dados] # Gera a lista para o eixo y
fig, ax = plt.subplots(figsize=(14,5))  # Create a figure containing a single axes.
ax.axhline(0, color='gray',linestyle='dashed', linewidth=1.8)
ax.plot(x,y, label='Temperatura', color='red', marker='o', markersize=12,  markerfacecolor='#0095da', markeredgecolor='black', linewidth=3);  # Plot some data on the axes.
ax.set_ylim(-25, 60)
ax.set_xlim(0,25)
ax.set_xlabel('$t ,[h], loc='right') plt.axhline(0, color='k', linewidth=0.5) plt.xticks(x) plt.annotate('Temperatura max', xy=(11.8, 54), xytext=(1, 52), arrowprops=dict(facecolor='orange', shrink=0.05), ) plt.annotate('Temperatura min', xy=(4, -10), xytext=(16, -11),              arrowprops=dict(facecolor='blue', shrink=0.05),              ) plt.plot(x,y, color='red', marker='o', markerfacecolor='#0095da', markeredgecolor='black') plt.sho

Python

colocar gráfico

Origem da palavra algoritmo

Fonte: BrasilEscola


Abu Jafar Mohamed ibn Musa al-Khwarizmi

Brilhante matemático e astrônomo persa-muçulmano nascido provavelmente na região de Khwarizm, sul do mar de Aral, na Ásia central, descobridor do Sistema de Numeração Decimal e dos dez símbolos, que hoje são conhecidos como algarismos indo-arábicos, e introdutor desses numerais e dos conceitos da álgebra na matemática européia. O Califa al-Mamum ocupava o trono do Império Árabe e decidiu transformar seu reino em um grande centro de ensino onde se pudesse dominar todas as áreas do conhecimento, originando a primeira época áurea da ciência islâmica. E para atingir esse objetivo, contratou e trouxe para Bagdá os grandes sábios muçulmanos daquela época. Entre esses sábios estava al-Khowarizmi, o maior matemático árabe de todos os tempos.

Vivendo sob os califados de al-Mamun e al-Mutasim, de sua vida anterior a Bagdá pouco se sabe, porém escreveu principalmente sobre astronomia, geografia e matemática. Da importância de sua obra também se originou a palavra álgebra (al-jabr = reunir). Seu extraordinário trabalho sobre matemática elementar Kitab Al-jabr w’al-mukabalah (A arte de reunir desconhecidos para igualar ao conhecido, 820), uma compilação de regras para solução aritmética de equações lineares e de segundo grau, baseado nos trabalhos de Diofante, foi traduzido no século XII para o latim e quando deu origem ao termo álgebra.

Encarregado de traduzir para o árabe os livros de matemática vindos da Índia, numa dessas traduções o matemático se deparou com aquilo ainda hoje é considerado, a maior descoberta no campo da matemática: O Sistema de Numeração Decimal. Ele ficou tão impressionado com a utilidade daqueles dez símbolos, que hoje são conhecidos como: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, que escreveu um livro explicando como funciona esse sistema. Este importante trabalho (825) foi preservado numa tradução latina Algoritmi de numero Indorum (975), um texto sobre a arte hindu de calcular, obra que divulgou os símbolos e o sistema numérico indo-arábico.

Este livro introduziu bibliograficamente na Europa, o sistema numérico dos hindus, que passou a ser conhecido como algarismos arábicos, além de importantes conceitos algébricos. Deste texto surgiu o termo algorítmo. Também compilou tabelas astronômicas, baseadas no Sind-hind, versão árabe do original sânscrito Brahma-siddhanta, no século VII da era cristã, e morreu em Bagdá. O termo algarismo vem de al-Khowarizmi, usado para denominar os símbolos de 0 a 9, uma homenagem a esse matemático árabe que mostrou a humanidade a utilidade desses dez e magníficos símbolos.


Mais fontes de informações:

Verified by MonsterInsights