Ir ao conteúdo

porque em qualquer liguagem nos podem para esquecer 'goto' e 'label'?


Cambalinho

Posts recomendados

Postado

eu ja vi isto em outras linguagens de programaçao: porque é que 1 bom programador(eu digo 'bom programador', porque é como esta no manual) deve evitar(parece mais que proibem) usar o 'goto' e 'label'?

Postado
eu ja vi isto em outras linguagens de programaçao: porque é que 1 bom programador(eu digo 'bom programador', porque é como esta no manual) deve evitar(parece mais que proibem) usar o 'goto' e 'label'?

Você deve usar se achar necessario, mas evitar usar VARIOS goto de forma que torne o codigo ilegivel, eu uso goto sem problemas, veja esse problema do google code jam

http://code.google.com/codejam/contest/351101/dashboard#s=p0

a melhor solução que encontrei usa goto:

/*

E-Mail : [email protected]
TopCoder Handle : ahmed_aly

Just For You

*/

#include <cstring>
#include <string.h>
#include <map>
#include <deque>
#include <queue>
#include <stack>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <vector>
#include <set>
#include <complex>
#include <list>

using namespace std;

#define pb push_back
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define sz size()
#define rep(i,m) for(int i=0;i<(int)(m);i++)
#define rep2(i,n,m) for(int i=n;i<(int)(m);i++)
#define For(it,c) for(__typeof(c.begin()) it=c.begin();it!=c.end();++it)
#define mem(a, memset(a,b,sizeof(a))
#define mp make_pair
#define dot(a, ((conj(a)*().X)
#define X real()
#define Y imag()
#define length(V) (hypot((V).X,(V).Y))
#define vect(a, ((-(a))
#define cross(a, ((conj(a)*().imag())
#define normalize(v) ((v)/length(v))
#define rotate(p,about,theta) ((p-about)*exp(point(0,theta))+about)
#define pointEqu(a, (comp(a.X,b.X)==0 && comp(a.Y,b.Y)==0)

typedef stringstream ss;
typedef pair<int, int> pii;
typedef vector<pii> vpii;
typedef vector<string> vs;
typedef vector<int> vi;
typedef vector<double> vd;
typedef vector<vector<int> > vii;
typedef long long ll;
typedef long double ld;
typedef complex<double> point;
typedef pair<point, point> segment;
typedef pair<double, point> circle;
typedef vector<point> polygon;

const int oo = (int) 1e9;
const double PI = 2 * acos(0);
const double eps = 1e-9;

inline int comp(const double &a, const double & {
if (fabs(a - < eps)
return 0;
return a > b ? 1 : -1;
}

int di[] = { 1, -1, 0, 0, 1, -1, 1, -1 };
int dj[] = { 0, 0, 1, -1, 1, -1, -1, 1 };
int diK[] = { -2, -2, -1, 1, 2, 2, 1, -1 };
int djK[] = { -1, 1, 2, 2, 1, -1, -2, -2 };

int I, J;

inline bool val(const int &i, const int &j) {
if (i < 0 || j < 0 || i >= I || j >= J)
return false;
return true;
}

int N;
int n;


int arr[2009];
#define SMALL
#define LARGE
int main() {
freopen("a.txt", "rt", stdin);
#ifdef SMALL
freopen("A-small-attempt0.in","rt",stdin);
freopen("A-small.out","wt",stdout);
#endif
#ifdef LARGE
freopen("A-large.in","rt",stdin);
freopen("A-large.out","wt",stdout);
#endif

int c;
cin >> N;
rep2(nn,1,N+1) {
cin>>c>>n;
rep(i,n)
cin>>arr[i];

printf("Case #%d: ", nn);
rep(i,n)
rep2(j,i+1,n)
if(arr[i]+arr[j]==c){
cout<<i+1<<" "<<j+1<<endl;
goto END;
}
END:;
}
return 0;
}

Postado

No meu curso de programação de PIC, agente sempre usava o GOTO, mas eram projetos pequenos. O professor dizia que se deve evitar o GOTO em projetos longos para não dificultar a leitura do código. Por exemplo, imagina um programa de 1600 linhas de código, e lá na linha 20 você bota algo assim: GOTO 'linha 1448', agora imagina se ele encontrasse outro GOTO só que agora pra linha '420' e depois encontra outro GOTO 'linha 1520' ou seja o programador se perde todo ao tentar ler o código, dificultando assim a correção de erros no programa. Além de deixar a execução do programa mais lento.

Algumas linguagens de programação "proibem" mesmo o uso do GOTO pois em suas sintaxes existem outras formas de programar evitando o uso do GOTO e tornando o código mais legível e eficiente..

Postado
No meu curso de programação de PIC, agente sempre usava o GOTO, mas eram projetos pequenos. O professor dizia que se deve evitar o GOTO em projetos longos para não dificultar a leitura do código. Por exemplo, imagina um programa de 1600 linhas de código, e lá na linha 20 você bota algo assim: GOTO 'linha 1448', agora imagina se ele encontrasse outro GOTO só que agora pra linha '420' e depois encontra outro GOTO 'linha 1520' ou seja o programador se perde todo ao tentar ler o código, dificultando assim a correção de erros no programa. Além de deixar a execução do programa mais lento.

Algumas linguagens de programação "proibem" mesmo o uso do GOTO pois em suas sintaxes existem outras formas de programar evitando o uso do GOTO e tornando o código mais legível e eficiente..

então se algumas linguagens o "proibem", porque o inventaram nessa linguagem?

Postado
então se algumas linguagens o "proibem", porque o inventaram nessa linguagem?

Para permitir que o programador faça desvios de fluxo diretos F5Rua4D.gif.

Vale lembrar que a linguagem C é antiga.

Espero ter ajudado GbhmuXl.gif.

Postado
Para permitir que o programador faça desvios de fluxo diretos F5Rua4D.gif.

Vale lembrar que a linguagem C é antiga.

Espero ter ajudado GbhmuXl.gif.

eu sei que é antiga;)

mas é bom começar em C, para entrar em C++ e a seguir Visual C++ e depois quero aprender sobre compiladores e se poder tambem sobre DirectX(nao por causa de jogos(mas tambem), mas por causa de aspectos graficos e de som);)

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...