{"id":1299,"date":"2022-04-27T23:07:48","date_gmt":"2022-04-28T02:07:48","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=1299"},"modified":"2022-04-29T09:25:13","modified_gmt":"2022-04-29T12:25:13","slug":"solicitacao-algoritmo12-ponto-no-retangulo","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/solicitacao-algoritmo12-ponto-no-retangulo\/","title":{"rendered":"Solicita\u00e7\u00e3o de algoritmo 12 &#8211; ponto no ret\u00e2ngulo"},"content":{"rendered":"\n<p>A solicita\u00e7\u00e3o desse algoritmo foi feita pela Melyssa e \u00e9 uma solicita\u00e7\u00e3o em linguagem de programa\u00e7\u00e3o Python.<\/p>\n\n\n\n<p><strong>Segue o enunciado<\/strong>: elaborar um programa que recebe como informa\u00e7\u00e3o quatro pontos que representam as coordenadas que formam um ret\u00e2ngulo, e um outro ponto. O Programa deve imprimir se o ponto est\u00e1 dentro do ret\u00e2ngulo ou n\u00e3o.<\/p>\n\n\n\n<p>A primeira tentativa de solu\u00e7\u00e3o da Melyssa \u00e9 mostrada abaixo. Ela tentou algo relacionado com o tamanho\/\u00e1rea do ret\u00e2ngulo, lendo sua altura e largura. Isso n\u00e3o atendia o que era solicitado no enunciado (que \u00e9 claro na necessidade de informar os 4 pontos que formam o ret\u00e2ngulo).  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">altura = int(input('Qual a altura do ret\u00e2ngulo?'))\nlargura = int(input('Qual a largura do ret\u00e2ngulo?'))\nponto = int(input('Qual o ponto que voc\u00ea deseja verificar?'))\narea = largura*altura\nif ponto&gt;area:\n    print ('Seu ponto n\u00e3o est\u00e1 dentro do ret\u00e2ngulo')\nelse:\n    print ('Seu ponto est\u00e1 dentro do ret\u00e2ngulo.')<\/code><\/pre>\n\n\n\n<p>Na d\u00favida sobre como resolver um problema, as vezes o melhor \u00e9 come\u00e7ar com algo relacionado para ir &#8220;destravando&#8221; alternativas de como resolver. Infelizmente a alternativa pensada estava longe do que era pedido, mas a Melyssa partiu para um nova tentativa. <\/p>\n\n\n\n<p>A segunda tentativa de solu\u00e7\u00e3o da Melyssa come\u00e7ou com o direcionamento certo (lendo os pontos), mas com uma interpreta\u00e7\u00e3o errada de como resolver. A solu\u00e7\u00e3o dela segue abaixo e logo em seguida explico o que est\u00e1 incorreto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">c1 = int(input('Qual a coordenada 1?'))\nc2 = int(input('Qual a coordenada 2?'))\nc3 = int(input('Qual a coordenada 3?'))\nc4 = int(input('Qual a coordenada 4?'))\nponto = int(input('Qual o ponto principal?'))\n\nif ponto &gt; c1\n    print('fora')\nif ponto &gt; c2\n    print('fora')\nif ponto &gt; c3\n    print('fora')\nif ponto &gt; c4\n    print('fora')\nprint('dentro')<\/code><\/pre>\n\n\n\n<p>Logo na primeira linha \u00e9 buscado ler a coordenada do primeiro ponto, mas isso n\u00e3o est\u00e1 correto. Recorro \u00e0 imagem abaixo para explicar melhor. Na figura \u00e9 desenhado um ret\u00e2ngulo no plano cartesiano. O ponto A est\u00e1 na coordenada (2,2), o ponto B est\u00e1 na coordenada (5,2), o ponto C na coordenada (5,4) e o ponto D est\u00e1 na coordenada (2,4). Ou seja, uma coordenada \u00e9 um par de valores que designam os valores de <em>x<\/em> e <em>y<\/em> no plano cartesiano.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-content\/uploads\/sites\/2\/2022\/04\/retangulo_planoCartesiano.png\"><img loading=\"lazy\" decoding=\"async\" width=\"239\" height=\"211\" src=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-content\/uploads\/sites\/2\/2022\/04\/retangulo_planoCartesiano.png\" alt=\"Fonte da imagem: https:\/\/ligamundo.plurall.net\/wp-content\/uploads\/2018\/11\/28_LM_MAT_5ANO_4BIM_Sequencia_didatica_1_TRTA_ok.pdf\" class=\"wp-image-1300\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Sendo assim, para ler as coordenada de um ponto \u00e9 preciso ler dois valores. Isso faz o c\u00f3digo ficar repetitivo, mas \u00e9 preciso ler os 4 pontos do ret\u00e2ngulo e tamb\u00e9m o ponto que se quer determinar se est\u00e1 dentro ou fora da \u00e1rea.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">x1 = input(\"Informe o valor de x da primeira coordenada: \")\ny1 = input(\"Informe o valor de y da primeira coordenada: \")\nprint(\"Primeira coordenada: {},{}\".format(x1, y1))<\/code><\/pre>\n\n\n\n<p>Aqui vale indicar uma alternativa, que envolve ler os dois valores em um \u00fanico <em>input()<\/em> fazendo uso da fun\u00e7\u00e3o<em> split()<\/em>. O c\u00f3digo abaixo \u00e9 similar ao imediatamente acima para realiza\u00e7\u00e3o da leitura da coordenada. Como o c\u00f3digo \u00e9 mais complexo de entender (com a atribui\u00e7\u00e3o para duas vari\u00e1veis e uso da fun\u00e7\u00e3o <em>split()<\/em>) preferi elaborar a solu\u00e7\u00e3o utilizando a forma mais simples e convencional.<\/p>\n\n\n\n<pre title=\"C\u00f3digo para ler dois n\u00fameros em um mesmo input no Python\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">x1, y1 = input(\"Informe a primeira coordenada: \").split()\nprint(\"Primeira coordenada: {},{}\".format(x1, y1))<\/code><\/pre>\n\n\n\n<p>Al\u00e9m de ler dois valores para cada coordenada (quatro no total), o mesmo \u00e9 preciso fazer para o ponto que se quer testar se est\u00e1 dentro ou fora do ret\u00e2ngulo. O c\u00f3digo final \u00e9 mostrado a seguir.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">x1 = input(\"Informe o valor de x da primeira coordenada: \")\ny1 = input(\"Informe o valor de y da primeira coordenada: \")\n#print(\"Primeira coordenada: {},{}\".format(x1, y1))\n\nx2 = input(\"Informe o valor de x da primeira coordenada: \")\ny2 = input(\"Informe o valor de y da primeira coordenada: \")\n#print(\"Primeira coordenada: {},{}\".format(x2, y2))\n\nx3 = input(\"Informe o valor de x da primeira coordenada: \")\ny3 = input(\"Informe o valor de y da primeira coordenada: \")\n#print(\"Primeira coordenada: {},{}\".format(x3, y3))\n\nx4 = input(\"Informe o valor de x da primeira coordenada: \")\ny4 = input(\"Informe o valor de y da primeira coordenada: \")\n#print(\"Primeira coordenada: {},{}\".format(x4, y4))\n\nxA = input(\"Informe o valor de x de uma coordenada: \")\nyA = input(\"Informe o valor de y de uma coordenada: \")\n\n#x1=2; y1=2; x2=5; y2=2; x3=5; y3=4; x4=2; y4=4\n#xA=3; yA=30\n\nif xA &gt; x1 and xA &lt; x2:\n    if yA &gt; y1 and yA &lt; y4:\n        print(\"Ponto dentro\")\n    else:\n        print(\"Ponto fora\")\nelse:\n    print(\"Ponto fora\")<\/code><\/pre>\n\n\n\n<p>Teste o c\u00f3digo acima em: <a rel=\"noreferrer noopener\" href=\"https:\/\/py3.codeskulptor.org\/#user307_0Gj2aMOR6F_0.py\" target=\"_blank\">https:\/\/py3.codeskulptor.org\/#user307_0Gj2aMOR6F_0.py<\/a><\/p>\n\n\n\n<p>Nas linha 20 e 21 est\u00e1 comentada uma s\u00e9rie de atribui\u00e7\u00f5es. Fiz isso para testar mais r\u00e1pido o c\u00f3digo e n\u00e3o precisar ficar fornecendo v\u00e1rios valores. Nesse caso, eu comentava as linhas anteriores e deixava essas atribui\u00e7\u00f5es.<\/p>\n\n\n\n<p>Para os testes se o ponto informado estava dentro do ret\u00e2ngulo, veja que n\u00e3o \u00e9 necess\u00e1rio utilizar todos os pontos. O valor em <em>y<\/em> nos pontos C e D s\u00e3o os mesmo, assim como nos pontos A e B. Em rela\u00e7\u00e3o aos valores de <em>x<\/em>, esse ser\u00e1 igual em A e D e nos pontos B e C. Veja que essa minha rela\u00e7\u00e3o de igualdade entre alguns valores das coordenadas pressup\u00f5e que o ret\u00e2ngulo \u00e9 desenhando na horizontal ou vertical. <strong>Se um ret\u00e2ngulo na diagonal for informado, minha solu\u00e7\u00e3o n\u00e3o ir\u00e1 funcionar<\/strong>.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>A solicita\u00e7\u00e3o desse algoritmo foi feita pela Melyssa e \u00e9 uma solicita\u00e7\u00e3o em linguagem de programa\u00e7\u00e3o Python. Segue o enunciado: elaborar um programa que recebe como informa\u00e7\u00e3o quatro pontos que representam as coordenadas que formam um ret\u00e2ngulo, e um outro ponto. O Programa deve imprimir se o ponto est\u00e1 dentro do ret\u00e2ngulo ou n\u00e3o. A [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1299","post","type-post","status-publish","format-standard","hentry","category-python"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/comments?post=1299"}],"version-history":[{"count":5,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1299\/revisions"}],"predecessor-version":[{"id":1310,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1299\/revisions\/1310"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=1299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=1299"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=1299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}